求哪里错了,题目名称叫合并果子
pascal吧
全部回复
仅看楼主
level 2
var
j,k,n,r,i,m,y,ans,x:longint;
a,b:array[1..100000] of longint;
procedure qsort(h,r:longint);
var
j,i,k:longint;
x:longint;
begin
if h<=r then begin
i:=h;j:=r;k:=a[h];
while i<j do begin
while (a[j]>k) and (i<j) do dec(j);
if i<j then begin a[i]:=a[j];inc(i);end;
while (a[i]<=k) and (i<j) do inc(i);
if i<j then begin a[j]:=a[i];dec(j);end;
end;
a[i]:=k;
qsort(h,i-1);
qsort(i+1,r);
end;
end;
function min(e,f,g:longint):longint;
begin
if (e<=f) and (e<=g) then min:=1;
if (f<=e) and (f<=g) then min:=2;
if (g<=e) and (g<=e) then min:=3;
end;
begin
readln(n);
for i:=1 to n do
read(a[i]);
qsort(1,n);
ans:=0;
a[n+1]:=maxlongint;
for i:=1 to n-1 do begin
k:=a[i]+a[i+1];
ans:=ans+k;
j:=i+1;
while k>a[j+1] do begin
a[j]:=a[j+1];
inc(j);
end;
end;
x:=1;
y:=1;
r:=0;
for i:=1 to n-1 do begin
k:=min(a[x]+a[x+1],a[x]+b[y],b[y]+b[y+1]);
case k of
1:begin m:=a[x]+a[x+1];inc(ans,m);inc(x,2);end;
2:begin m:=a[x]+b[y];inc(ans,m);inc(x);inc(y);end;
3:begin m:=b[y]+b[y+1];inc(ans,m);inc(y,2);end;
end;
inc(ans,m);inc(r);b[r]:=m;
end;
a[j]:=k;
writeln(ans);
end.
2016年08月16日 10点08分 1
1