哪位神牛帮忙下
var
a,b:array[0..10001] of int64;
ans,maxn:int64;
i,j,k,ansi,ansj,n,m,flag:longint;
function Max(u,v:longint):longint;
begin
if u>v then exit(u);
exit(v);
end;
procedure Quick(l,r:longint);
var
tl,tr,mid,tmp:longint;
begin
tl:=l; tr:=r; mid:=a[(l+r) shr 1];
repeat
while a[tl]<mid do inc(tl);
while a[tr]>mid do dec(tr);
if tl<=tr then
begin
tmp:=a[tl];
a[tl]:=a[tr];
a[tr]:=tmp;
inc(tl);
dec(tr);
end;
until tl>tr;
if l<tr then Quick(l,tr);
if tl<r then Quick(tl,r);
end;
begin
readln(n);
for i:=1 to n do
begin
readln(a[i]);
b[i]:=a[i];
if maxn<a[i] then
begin
maxn:=a[i];
flag:=i;
end;
end;
Quick(1,n);
for i:=1 to n do
begin
if b[i]=a[n] then ansi:=i;
if b[i]=a[n-1] then ansj:=i;
end;
ans:=Max(maxn*(n-1),a[n]*abs(ansi-ansj)+a[n-1]*abs(ansi-ansj));
writeln(ans);
end.
求指点
var
a,b:array[0..10001] of int64;
ans,maxn:int64;
i,j,k,ansi,ansj,n,m,flag:longint;
function Max(u,v:longint):longint;
begin
if u>v then exit(u);
exit(v);
end;
procedure Quick(l,r:longint);
var
tl,tr,mid,tmp:longint;
begin
tl:=l; tr:=r; mid:=a[(l+r) shr 1];
repeat
while a[tl]<mid do inc(tl);
while a[tr]>mid do dec(tr);
if tl<=tr then
begin
tmp:=a[tl];
a[tl]:=a[tr];
a[tr]:=tmp;
inc(tl);
dec(tr);
end;
until tl>tr;
if l<tr then Quick(l,tr);
if tl<r then Quick(tl,r);
end;
begin
readln(n);
for i:=1 to n do
begin
readln(a[i]);
b[i]:=a[i];
if maxn<a[i] then
begin
maxn:=a[i];
flag:=i;
end;
end;
Quick(1,n);
for i:=1 to n do
begin
if b[i]=a[n] then ansi:=i;
if b[i]=a[n-1] then ansj:=i;
end;
ans:=Max(maxn*(n-1),a[n]*abs(ansi-ansj)+a[n-1]*abs(ansi-ansj));
writeln(ans);
end.
求指点