tree=record
f,left,right,data:longint;
end;
var i,j,p,z,n,t,k:longint;
sum,m:int64;
a:array [1..100000]of tree;
function min(h:longint):longint;
begin
m:=100000000000;
for i:=1 to h do
if (a[i].data<m)and (a[i].f=0) then
begin
m:=a[i].data;
t:=i;
end;
min:=t;
end;
procedure guozi;
begin
for k:=n+1 to z do
begin
p:=min(k-1);a[p].f:=k;a[k].left:=p;
j:=min(k-1);a[j].f:=k;a[k].right:=j;
a[k].data:=a[p].data+a[j].data;
end;
end;
begin
readln(n);
z:=n*2-1;
for i:=1 to n do
read(a[i].data);
guozi;
sum:=0;
for i:=n+1 to z do sum:=sum+a[i].data;
writeln(sum);
end.
测试结果1: 通过本测试点|有效耗时172ms
测试结果2: 通过本测试点|有效耗时172ms
测试结果3: 通过本测试点|有效耗时172ms
测试结果4: 通过本测试点|有效耗时469ms
测试结果5: 通过本测试点|有效耗时593ms
测试结果6: 选手程序运行超过时限
测试结果7: 测试结果错误.错误结果为:1233019094
正确结果应为:199205993
测试结果8: 测试结果错误.错误结果为:1233019094
正确结果应为:130108340
测试结果9: 测试结果错误.错误结果为:1233019094
正确结果应为:233393206
测试结果10: 选手程序运行超过时限
var i,j,k,l,n,t:integer;
s:array[1..50] of longint;
sum:longint;
begin
sum:=0;
readln(n);
for i:=1 to n do read(s[i]);
for i:=1 to n do
for j:=i+1 to n do
if s[i]>s[j] then begin
t:=s[i];s[i]:=s[j];s[j]:=t;
end;
for i:=1 to n-1 do begin
s[i+1]:=s[i]+s[i+1];
sum:=sum+s[i+1];
for j:=i+1 to n do begin
if s[i+1]>s[j] then begin
t:=s[i+1];
for l:=i+1 to j-1 do s[l]:=s[l+1];
s[j-1]:=t;
end;
end;
end;
writeln(sum);
end.