无尽黑洞 2014-10-08 21:57:41
点我顶贴
收藏
删除
var
a:array[0..10000]of longint;
n,j,i,s,t:longint;
procedure kuai(t,w:longint);
var
mid,r,tt,ww:longint;
begin
tt:=t;
ww:=w;
mid:=a[(t+w) div 2];
while t<=w do
begin
while a[t]>mid do
t:=t+1;
while a[w]<mid do
w:=w-1;
if t<=w then
begin
r:=a[t];
a[t]:=a[w];
a[w]:=r;
t:=t+1;
w:=w-1;
end;
end;
if t<ww then kuai(t,ww);
if tt<w then kuai(tt,w);
end;
begin
read(n);
for i:=1 to n do
read(a[i]);
kuai(1,n);
a[0]:=maxlongint;
for i:=n-1 downto 1 do
begin
t:=a[i]+a[i+1];
s:=s+t;
j:=i-1;
while t>a[j] do
begin
a[j+1]:=a[j];
j:=j-1;
end;
a[j+1]:=t;
end;
writeln(s);
end.