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. 是答案错误; 问题名字为合并果子; 我输入 3 1 2 9 输出的是14 求解