讨论 / 为什么只有30分,奇怪
zhhyoi 2009-06-04 02:12:00
点我顶贴 收藏 删除
program zhhy;

var min:int64;

i,j,k,n:longint;

a:array[0..10010]of int64;

b:array[0..10010]of int64;

procedure sort(l,r:longint);

var i,j,x:longint;

t:int64;

begin

i:=l;j:=r;

x:=a[(l+r) shr 1];

repeat

while a[i]<x do inc(i);

while a[j]>x do dec(j);

if i<=j then

begin

t:=a[i];a[i]:=a[j];a[j]:=t;inc(i);dec(j);

end;

until i>j;

if i<r then sort(i,r);

if j>l then sort(l,j);

end;

procedure make;

var g:longint;

p,q:int64;

begin

i:=1;

j:=1;

k:=1;

for g:=1 to n-1 do

begin

if a[i]<b[j] then begin p:=a[i];inc(i);end

else begin p:=b[j];inc(j);end;

if a[i]<b[j] then begin q:=a[i];inc(i);end

else begin q:=b[j];inc(j);end;

b[k]:=q+p;inc(k);

min:=min+b[k-1];

end;

end;

begin

min:=0;

readln(n);

for i:=1 to n do

begin

read(a[i]);

b[i]:=maxlongint;

end;

sort(1,n);

make;

writeln(min);

readln;

readln;

end.

过前3个点,剩下的都比正确答案小

查看更多回复
提交回复