var
i,j,k,n,s:longint;
a:array[0..10001] of longint;
procedure pai(low,high:longint);
var i,j,x:longint;
begin
if low<high then
begin
i:=low;j:=high;x:=a[i];
repeat
while (x<=a[j]) and (i<j) do dec(j);
if (x>a[j]) and (i<j) then begin a[i]:=a[j];inc(i);end;
while (x>=a[i]) and (i<j) do inc(i);
if (x<a[i]) and (i<j) then begin a[j]:=a[i];dec(j);end;
until i=j;
a[i]:=x;
pai(low,i);
pai(i+1,high);
end;
end;
begin
readln(n);
if n=1 then begin write(a[1]);halt;end;
for i:=1 to n do read(a[i]);
pai(1,i);{快排}
k:=0;
for i:=2 to n do
begin
a[i]:=a[i]+a[i-1];
k:=k+a[i];
end;
write(k);
end.
运行结果:
题目编号:25-合并果子 查看该题
状态: Unaccepted
测评机: Xeost[5]
得分: 10分
提交日期: 2008-9-11 22:11:00
有效耗时: 156毫秒
测试结果1: 通过本测试点|有效耗时156:ms
测试结果2: 测试结果错误.错误结果为:2870599
正确结果应为:89471
测试结果3: 测试结果错误.错误结果为:16606829
正确结果应为:481961
测试结果4: 测试结果错误.错误结果为:852550115
正确结果应为:485694875
测试结果5: 测试结果错误.错误结果为:108268555
正确结果应为:1233019094
测试结果6: 测试结果错误.错误结果为:-633409126
正确结果应为:131173003
测试结果7: 测试结果错误.错误结果为:-1995714425
正确结果应为:199205993
测试结果8: 测试结果错误.错误结果为:-1090908431
正确结果应为:130108340
测试结果9: 测试结果错误.错误结果为:1748515718
正确结果应为:233393206
测试结果10: 测试结果错误.错误结果为:-2146116654
正确结果应为:260332759
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
谁有测试数据,给赏!!!!!
var
i,j,k,n,s,p:longint;
a:array[0..10001] of longint;
procedure pai(low,high:longint);
var i,j,x:longint;
begin
if low<high then
begin
i:=low;j:=high;x:=a[i];
repeat
while (x<=a[j]) and (i<j) do dec(j);
if (x>a[j]) and (i<j) then begin a[i]:=a[j];inc(i);end;
while (x>=a[i]) and (i<j) do inc(i);
if (x<a[i]) and (i<j) then begin a[j]:=a[i];dec(j);end;
until i=j;
a[i]:=x;
pai(low,i);
pai(i+1,high);
end;
end;
begin
readln(n);
if n=1 then begin write(a[1]);halt;end;
for i:=1 to n do read(a[i]);
pai(1,i);k:=0;a[n+1]:=maxlongint;
for i:=2 to n do
begin
k:=k+a[i]+a[i-1];
a[i]:=a[i]+a[i-1];
for j:=i+1 to n+1 do
if a[i]<a[j] then
begin
for p:=i to j-2 do a[p]:=a[p+1];
a[j-1]:=a[i];
break;
end;
end;
write(k);
end.