
#include<iostream>
#include<queue>
using namespace std;
#define Max_NP 1001
typedef struct Mouse{
int weight;
int rank;
}Mouse;
int main()
{
int NP, NG;
queue<int> q;
cin >> NP >> NG;
Mouse Mice[Max_NP];
for(int i=0; i<NP; ++i) //读入mouse的初始重量
{
cin >> Mice[i].weight;
}
for(int i=0 , t; i<NP; ++i) //rank的次序,读入队列
{
cin >> t;
q.push(t);
}
int num, group, max_W, max_Ind;
while((num = (int)q.size()) > 1) //当队列不为空进行循环
{
group = num / NG + (num % NG == 0? 0:1);//每次循环需要划分的group数
for(int i=0; i<group; ++i){
max_W = -1;
max_Ind = -1;
for(int j=0; j<NG && i*NG+j < num; ++j)//这里循环判断很重要易漏
{
Mice[q.front()].rank = group + 1;
//第一轮要淘汰的老鼠排名记为group+1
if(Mice[q.front()].weight > max_W){
max_Ind = q.front();
max_W = Mice[q.front()].weight;
}
q.pop();
}
q.push(max_Ind);//每一组中最大的mouse再次入队
}
}
//此时结束循环后队列中还有最后一个mouse,即为最大的mouse,排名应该设为 1
Mice[q.front()].rank = 1;
//输出
cout << Mice[0].rank;
for(int i=1; i<NP; ++i)
{
cout << " " << Mice[i].rank;
}
return 0;
}