#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct Student {
char id[15];//the registration number
int score;
int final_r;//final_rank
int loc;//location_number
int local_r;//local_rank
} stu[30010],s;
int n=0;
bool cmp(Student a,Student b) {
if(a.score!=b.score) return a.score>b.score;
return strcmp(a.id,b.id)<0;
}
int main() {
int N;//the number of test locations
scanf("%d",&N);
for(int i=0; i<N; ++i) {
int K;//the number of testees of each test location
scanf("%d",&K);
for(int j=0; j<K; ++j) {
scanf("%s %d",s.id,&s.score);
s.loc=i+1;
stu[n]=s;
++n;
}
sort(stu+n-K,stu+n,cmp);
stu[n-K].local_r=1;
for(int j=n-K+1; j<n; ++j) {
if(stu[j].score==stu[j-1].score)
stu[j].local_r=stu[j-1].local_r;
else stu[j].local_r=j-n+K+1;
}
}
printf("%d\n",n);
sort(stu,stu+n,cmp);
stu[0].final_r=1;
printf("%s %d %d %d\n",stu[0].id,stu[0].final_r,stu[0].loc,stu[0].local_r);
for(int j=1; j<n; ++j) {
if(stu[j].score==stu[j-1].score)
stu[j].final_r=stu[j-1].final_r;
else stu[j].final_r=j+1;
printf("%s %d %d %d\n",stu[j].id,stu[j].final_r,stu[j].loc,stu[j].local_r);
}
return 0;
}
03-07
281
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交