题意
找出这n个人排队的一种顺序,使得n个人的平均等待时间最小。
分析
打水的时候花费时间越少的人越先打,那么所有人的等待时间之和就会最小,所以我们要先排序,再计算总时间
var
a,b:array[0..50000]of longint;
n,i,j,w:longint;
tj:real;
begin
readln(n);
for i:=1 to n do
begin
read(a[i]);
b[i]:=i;
end;
for i:=1 to n-1 do
begin
for j:=i+1 to n do
if a[i]>a[j] then
begin
a[0]:=a[i];a[i]:=a[j];a[j]:=a[0];
b[0]:=b[i];b[i]:=b[j];b[j]:=b[0];
end;
end;
tj:=0;
for i:=1 to n do
write(b[i],' ');
writeln;
w:=0;
for i:=n-1 downto 0 do
begin
inc(w);
tj:=tj+a[w]*i;
end;
write((tj/n):0:2);
end.