AC代码
#include<bits/stdc++.h>
using namespace std;
vector<int> v[12];
int main()
{
int n,m,cn=0;
scanf("%d%d",&n,&m);
int key[n],rank[n],temp;
for(int i=0;i<n;i++)
{
scanf("%d",&key[i]);
}
for(int i=0;i<n;i++)
{
scanf("%d",&temp);
v[cn].push_back(temp);
}
while(v[cn].size()!=1)
{
int change=v[cn].size();
for(int i=0;i<ceil((double)change/m);i++)
{
int k=i*m;
for(int j=i*m+1;j<(i+1)*m&&j<change;j++)
{
if(key[v[cn][j]]>key[v[cn][k]])
{
rank[v[cn][k]]=ceil((double)change/m)+1;
k=j;
}
else rank[v[cn][j]]=ceil((double)change/m)+1;;
}
v[cn+1].push_back(v[cn][k]);
}
cn++;
}
rank[v[cn][0]]=1;
for(int i=0;i<n;i++)
{
printf("%d",rank[i]);
if(i!=n-1) printf(" ");
}
return 0;
}