讨论 / pascal解法
无尽黑洞 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.

#1 yjhds@2015-10-16 18:07:11
回复 删除
数据小可以这样,但大了不行啊。。。。

#2 18046626470@2016-09-23 04:41:12
回复 删除
数据小可以这样,但大了不行啊。。
查看更多回复
提交回复