讨论 / 高手过来看看为什么错了
巫妖王 2010-08-02 07:49:00
点我顶贴 收藏 删除
var

n,k,i,j,x,p,q:longint;

w,e,c,a:array[0..500000]of longint;

procedure sort(l,r:longint);

var i,j,x,y,k:longint;

begin

i:=1;j:=r;

x:=w[(l+r)div 2];k:=a[(l+r)div 2];

repeat

while (w[i]>x)or((x=w[i])and(a[i]<k)) do inc(i);

while (x>w[j])or((x=w[j])and(a[j]>k)) do dec(j);

if i<=j then

begin

y:=w[i];

w[i]:=w[j];

w[j]:=y;

y:=a[i];

a[i]:=a[j];

a[j]:=y;

inc(i);

dec(j);

end;

until i>j;

if i<r then sort(i,r);

if l<j then sort(l,j);

end;

begin

readln(n,k);

for i:=1 to 10 do read(e[i]);

for i:=1 to n do begin

a[i]:=i;

read(w[i]);

end;

sort(1,n);

for i:=1 to n do

w[i]:=w[i]+e[(i-1)mod 10+1];

sort(1,n);

for i:=1 to k do

write(a[i],' ');

end.

#1 巫妖王@2010-08-02 07:49:00
回复 删除
后5个点为什么过不去
查看更多回复
提交回复