PAT 1542. 老鼠和大米
原题链接
简单
作者:
og_
,
2020-06-02 13:16:19
,
所有人可见
,
阅读 454
C++ 代码
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
queue<int> q;
struct mouse{
int weight;
int r;
}mouse[N];
int main(){
int np,ng;
cin>>np>>ng;
for(int i = 0;i < np ; i++) cin>>mouse[i].weight;
int order;
for(int i = 0;i < np ; i++){
cin>>order;
q.push(order);
}
int temp=np,group;
while(q.size()!=1){ //最后只剩一个
if(temp%ng==0) group = temp/ng;
else group = temp/ng + 1;
for(int i=0;i<group;i++){
int k = q.front();//存放每组最大的老鼠编号
for(int j = 0;j<ng;j++){ //遍历每个组 找最大,并出队
if(i*ng+j>=temp) break;
int front = q.front();
if(mouse[k].weight<mouse[front].weight) k = front;
mouse[front].r = group + 1;
q.pop();
}
q.push(k);
}
temp = group; //下一轮
}
mouse[q.front()].r=1;
for(int i = 0 ;i<np;i++){
cout<< mouse[i].r<<" ";
}
return 0;
}