算法:模拟
分析:本题没有什么技巧可言,快排一遍后增加额外值再快排一遍即可。水题~
program mphoto;
const
maxn=50000;
var
n,k:longint;
w,s,d:array [0..maxn] of longint;
e:array [1..10] of longint;
procedure init;
var
i:longint;
begin
fillchar(s,sizeof(s),0);
readln(n,k);
for i:=1 to 10 do read(e[i]);
readln;
for i:=1 to n do
begin
read(w[i]);
d[i]:=i;
end;
end;
procedure qsort(l,r:longint);
var
i,j,m,t,t1:longint;
begin
i:=l;
j:=r;
t1:=d[(l+r) div 2];
m:=w[(l+r) div 2];
repeat
while ((w[i]>m) or ((w[i]=m) and (d[i]<t1))) do inc(i);
while ((w[j]<m) or ((w[j]=m) and (d[j]>t1))) do dec(j);
if i<=j then
begin
t:=w[i];
w[i]:=w[j];
w[j]:=t;
t:=d[i];
d[i]:=d[j];
d[j]:=t;
inc(i);
dec(j);
end;
until i>j;
if i<r then qsort(i,r);
if l<j then qsort(l,j);
end;
procedure main;
var
i:longint;
begin
for i:=1 to n do (w[i],e[(i-1) mod 10+1]);
end;
procedure print;
var
i:longint;
begin
for i:=1 to k do write(d[i],' ');
end;
begin
assign(input,'mphoto.in'); reset(input);
assign(output,'mphoto.out'); rewrite(output);
init;
qsort(1,n);
main;
qsort(1,n);
print;
close(input); close(output);
end.