为什么第5点过不了呢

测试结果1: 通过本测试点|有效耗时172:ms

测试结果2: 通过本测试点|有效耗时156:ms

测试结果3: 通过本测试点|有效耗时172:ms

测试结果4: 测试结果错误.错误结果为:485694889

正确结果应为:485694875

测试结果5: 通过本测试点|有效耗时344:ms

测试结果6: 通过本测试点|有效耗时891:ms

测试结果7: 通过本测试点|有效耗时969:ms

测试结果8: 通过本测试点|有效耗时937:ms

测试结果9: 通过本测试点|有效耗时953:ms

测试结果10: 通过本测试点|有效耗时906:ms

---|---|---|---|---|---|---|---|---|---|---|---|---|---|-

想不通为什么就这个点过不了,哪个朋友帮我看看呢,谢谢了。

程序:

var i,j,n,k,k1,k2:longint;s:qword;m:int64;

a:array[1..10001]of int64;

begin

readln(n);

for i:=1 to n do

read(a[i]);

s:=0;

for i:=1 to n-1 do

for j:=i+1 to n do

if a[i]>a[j] then begin m:=a[i];a[i]:=a[j];a[j]:=m;end;

j:=1;

for i:=1 to n-1 do

begin

s:=s+a[j]+a[j+1];

a[j+1]:=a[j]+a[j+1];

inc(j);

for k:=j+1 to n do

if a[j]

2 条评论

  • @ 2013-11-02 14:17:43

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<algorithm>
    #include<conio.h>
    using namespace std;
    int insert(int q,long long a,long long *p,long long end){
    for(;q<=end;q++)
    if(p[q]<a) p[q]=p[q+1];
    else break;
    if(q<end)p[q]=p[q+1],p[q+1]=a;
    else p[end]=a;
    }
    long long fruit[10010];
    int main(){
    long long n,ans=0,p=0;
    scanf("%I64d",&n);
    if(n==1) {scanf("%d",ans);printf("%d",ans);return 0;}
    int i;
    for(i=1;i<=n;i++) scanf("%I64d",fruit+i);
    sort(fruit+1,fruit+n+1);
    for(i=1;i<n;i++){
    p=fruit[i]+fruit[i+1];
    fruit[i]=0;fruit[i+1]=0;
    ans+=p;
    insert(i,p,fruit,n);
    }
    printf("%I64d",ans);
    return 0;
    }

  • @ 2013-11-02 14:17:24

    同错

  • 1

信息

ID
1097
难度
6
分类
贪心 点击显示
标签
递交数
23906
已通过
6330
通过率
26%
被复制
41
上传者