https://pintia.cn/problem-sets/994805342720868352/problems/994805419468242944
这里是用队列模拟。
#includeusing namespace std; const int N=1e5+10; int a[N],b[N]; map mp; //体重映射编号 map ans; //存一下答案 queue q,backup,c;// c是一个空的队列,便于队列清空 int main(void) { int n,m; cin>>n>>m; for(int i=0;i >a[i],mp[a[i]]=i; for(int i=0;i >b[i],q.push(b[i]); while(q.size()>1) { backup=q; q=c; int len=backup.size();//存一下当前的人数 while(backup.size())//每一轮 { int cnt=-1e9; int rating=len/m+1;//有多少人晋级+1 就是败者的排名 if(len%m) rating++; for(int i=0;i



