PAT a1056题解

来源:互联网 发布:数据库编程语言 编辑:程序博客网 时间:2024/06/05 03:41
#include <cstdio>#include <queue>using namespace std;const int maxn = 1010;struct mouse{int weight;int R;}mouse[maxn];int main(){int np, ng, order;scanf("%d%d", &np, &ng);for(int i = 0; i < np; i++){scanf("%d", &mouse[i].weight);}queue<int> q;for(int i = 0; i < np; i++){scanf("%d", &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[front].weight > mouse[k].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++){printf("%d", mouse[i].R);if(i < np -1) printf(" "); }return 0;}