- 合并果子
- 2008-12-07 09:46:24 @
测试结果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 条评论
-
2641759526 LV 8 @ 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