为什么我总是216
查看原帖
为什么我总是216
6128
一UNowen一楼主2015/3/2 21:21

其他题目有时也会这样,这次五个数据全216忍不了了,求解释,附代码

var
a,b:array[1..20000] of longint;
e:array[1..10] of longint;
n,m,i,j:longint;
procedure qs(l,r:integer);
var
i,j,m,t,m1:longint;
begin
i:=l;
j:=r;
m:=a[(l+r) div 2];
m1:=b[(l+r) div 2];
repeat
while (a[i]>m)or((a[i]=m)and(b[i]>m1)) do inc(i);
while (a[j]<m)or((a[i]=m)and(b[i]<m1)) do dec(j);
if i<=j then
begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
t:=b[i];
b[i]:=b[j];
b[j]:=t;
inc(i);
dec(j);
end;
until i>j;
if l<j then qs(l,j);
if i<r then qs(i,r);
end;
begin
readln(n,m);
for i:=1 to 10 do read(e[i]);
readln;
for i:=1 to n do begin
 read(a[i]);
 b[i]:=i;
 end;
qs(1,n);
for i:=1 to n do a[i]:=a[i]+e[(i-1)mod 10+1];
qs(1,n);
for i:=1 to m do write(b[i],' ');
end.
2015/3/2 21:21
加载中...