kingoffighters 2010-09-12 08:27:00
点我顶贴
收藏
删除
begin
ii:=i;jj:=j;
m:=w[b[(i+j) div 2]];
repeat
while w[b[i]]>m do inc(i);
while w[b[j]]<m do
dec(j);
if i<=j then
begin
t:=b[i];
b[i]:=b[j];
b[j]:=t;
inc(i);
dec(j);
end;
until i>j ;
if ii<j then hs(ii,j);
if jj>i then hs(i,jj);
end;
begin
assign(input,’e:/i.in’);
assign(output,’e:/i.out’);
reset(input);
rewrite(output);
readln(n,k);
for i:=1 to 10 do
read(e[i]);
readln;
for i:=1 to n do
begin
read(w[i]);
b[i]:=i;end;
hs(1,n);
for i:=1 to n do
begin
c[i]:=(i-1) mod 10+1;
w[b[i]]:=w[b[i]]+e[c[i]];
end;
hs(1,n);
for i:=1 to k-1 do
write(b[i],’ ’);
write(b[k]);
close(input);
close(output);
end.
这是代码,谁能告诉我我是思路错了呢,还是代码有问题啊。。。我是先哈希排序,然后重新求值,再哈希排序。。。