讨论 / 求大神教我哪里错了
b419334269 2013-11-25 21:14:57
点我顶贴 收藏 删除
var i,j,n,s,t,x1,x2:longint;

a:array[1..10000] of longint;

procedure bulid(k,n:longint);

var i,j,t:longint;

begin

k:=k*2;

if k<=n then

begin

i:=k div 2; j:=k+1;

if (j<=n) and (a[j]<a[k]) then k:=k+1;

if a[i]>a[k] then

begin

t:=a[i]; a[i]:=a[k]; a[k]:=t;

end;

bulid(k,n);

end;

end;

begin

readln(n); s:=0;

for i:=1 to n do read(a[i]);

for i:=n div 2 downto 1 do bulid(i,n);

for i:=1 to n-1 do

begin

x1:=0; x2:=0;

x1:=a[1];

t:=a[1]; a[1]:=a[n+1-i]; a[n+1-i]:=t;

bulid(1,n-i);

x2:=a[1];

t:=a[1]; a[1]:=a[n-i]; a[n-i]:=t;

bulid(1,n-1-i);

s:=s+x1+x2;

a[n-i]:=x1+x2;

t:=a[1]; a[1]:=a[n-i]; a[n-i]:=t;

bulid(1,n-i);

end;

writeln(s);

end.

查看更多回复
提交回复