讨论 / 快排 多关键字 不给过? 50分 悲剧...
Crisis 2012-08-16 20:31:00
点我顶贴 收藏 删除
求解释... WA:50

program rqnoj;

var i,j,n,m,k,sum,t:longint;

f:array[1..2000,1..10]of longint;

ave,x,s:array[1..2000]of longint;

procedure qsort(lx,rx:longint);

var l,r,mid,mid1,mid2,temp:longint;

begin

l:=lx; r:=rx; mid:=ave[(l+r)div 2]; mid1:=s[(l+r)div 2]; mid2:=x[(l+r)div 2];

repeat

while (ave[l]>mid) or ((ave[l]=mid) and (s[l]<mid1)) or ((ave[l]=mid)and(s[l]=mid1)and(x[l]<mid2)) do inc(l);

while (ave[r]<mid) or ((ave[r]=mid) and (s[r]>mid1)) or ((ave[r]=mid)and(s[r]=mid1)and(x[r]>mid2)) do dec(r);

if l<=r then

begin

temp:=ave[l];ave[l]:=ave[r];ave[r]:=temp;

temp:=s[l];s[l]:=s[r];s[r]:=temp;

temp:=x[l];x[l]:=x[r];x[r]:=temp;

inc(l);

dec(r);

end;

until l>r;

if r>lx then qsort(lx,r);

if l<rx then qsort(l,rx);

end;

begin

readln(n,m,k);

for i:=1 to n do

begin

for j:=1 to k do

read(f[i,j]);

readln;

end;

for i:=1 to n do

begin

sum:=0;

for j:=1 to k do

inc(sum,f[i,j]);

ave[i]:=sum div k;

sum:=0;

for j:=1 to k do

inc(sum,sqr(f[i,j]-ave[i]));

s[i]:=sum div k;

x[i]:=i;

end;

qsort(1,n);

for i:=1 to m-1 do

write(x[i],' ');

writeln(x[m]);

end.

查看更多回复
提交回复