#include<cstdio>#include<algorithm>#include<stdlib.h>#include<cstring>using namespace std;struct student{ char id[15]; int score; int lonum; int localrank; int finalrank;}st[30010];bool cmp(student st1,student st2){ if(st1.score!=st2.score) return st1.score>st2.score; else return strcmp(st1.id,st2.id)<0;}int main(){ int n;//考场数 scanf("%d",&n); int k[105]={};//考场人数 int sum=0;//总人数 for(int i=1;i<=n;i++) { scanf("%d",&k[i]); for(int j=sum;j<(k[i]+sum);j++) { scanf("%s %d",st[j].id,&st[j].score); st[j].lonum=i; } sort(st+sum,st+sum+k[i],cmp); st[sum].localrank=1; for(int j=sum+1;j<(k[i]+sum);j++) { if(st[j].score==st[j-1].score) st[j].localrank=st[j-1].localrank; else st[j].localrank=j-sum+1; } sum=k[i]+sum; } sort(st,st+sum,cmp); st[0].finalrank=1; for(int i=1;i<sum;i++) { if(st[i].score==st[i-1].score) st[i].finalrank=st[i-1].finalrank; else st[i].finalrank=i+1; } PRintf("%d/n",sum); for(int i=0;i<sum;i++) { printf("%s %d %d %d/n",st[i].id,st[i].finalrank,st[i].lonum,st[i].localrank); } system("pause"); return 0;}
新闻热点
疑难解答