我写了个,用快排和插排,速度也过得去.
program fruit;
var a:array[0..10000] of longint;
f:text;
n,total:longint;
i:integer;
procedure swap(var a,b:longint);
var t:integer;
begin
t:=a; a:=b; b:=t
end;
procedure quick_sort(m,n:integer);
var i,j,x:integer;
begin
i:=m; j:=n; x:=a[(i+j) div 2];
repeat
while a[i]>x do inc(i);
while x>a[j] do dec(j);
if i<=j then begin
swap(a[i],a[j]);
inc(i); dec(j)
end;
until i>j;
if m<j then sort(m,j);
if i<n then sort(i,n);
end;
procedure insert_sort(n:integer);
var i,j:integer;
begin
i:=n-1; a[0]:=a[n];
while a[i]<a[0] do begin
a[i+1]:=a[i];
dec(i)
end;
a[i+1]:=a[0]
end;
begin
assign(f,'fruit10.in'); reset(f);
readln(f,n);
for i:=1 to n do
read(f,a[i]);
close(f);
quick_sort(1,n);
for i:=1 to n-1 do begin
a[n-i]:=a[n-i]+a[n-i+1];
a[n-i+1]:=0;
inc(total,a[n-i]);
insert_sort(n-i)
end;
assign(f,'fruit.out'); rewrite(f);
writeln(f,total);
close(f)
end.