PAT1056

来源:互联网 发布:创度软件下载 编辑:程序博客网 时间:2024/06/06 05:11

语文没学好。。。

#include<stdio.h>#include<queue>#include<algorithm>using namespace std;const int maxm=1010;int np,ng;struct node{double weight;int layer;int rank;int id;}mice[maxm];int cmp(node a,node b){return a.layer>b.layer;}int cmp1(node a,node b){return a.id<b.id;}int main(){int x;//freopen("in.txt","r",stdin);scanf("%d%d",&np,&ng);for(int i=0;i<np;i++){scanf("%lf",&mice[i].weight);mice[i].id=i;}queue<int>q;for(int i=0;i<np;i++){scanf("%d",&x);q.push(x);}int member=np;int group;if(np%ng==0)group=np/ng;elsegroup=np/ng+1;int level=1;while(!q.empty()){int count=0;for(int i=0;i<group;i++){int max=-1;int index=-1;for(int j=0;j<ng&&count<member;j++,count++){int tmp=q.front();mice[tmp].layer=level;if(mice[tmp].weight>max){max=mice[tmp].weight;index=tmp;}q.pop();}q.push(index);}level++;member=q.size();if(member==1){mice[q.front()].layer=level;q.pop();}if(member%ng==0)group=member/ng;elsegroup=member/ng+1;}sort(mice,mice+np,cmp);mice[0].rank=1;int cur=1;for(int i=1;i<np;i++){if(mice[i].layer==mice[i-1].layer)mice[i].rank=mice[i-1].rank;elsemice[i].rank=i+1;}sort(mice,mice+np,cmp1);printf("%d",mice[0].rank);for(int i=1;i<np;i++)printf(" %d",mice[i].rank);printf("\n");return 0;}


0 0
原创粉丝点击