#include <bits/stdc++.h>
using namespace std;
struct Student{
char id[15];
int local_rank;
int local_number;
int score;
}s[30010];
bool cmp(Student a, Student b){
if(a.score != b.score) return a.score>b.score;
else return strcmp(a.id,b.id)<0;
}
int main()
{
int n;
int num=1;
scanf("%d", &n);
for(int i=1;i<=n;i++){
int m;
scanf("%d",&m);
for(int j=1;j<=m;j++){
scanf("%s %d",s[num].id,&s[num].score);
s[num].local_number = i;
num++;
}
sort(s+num-m,s+num,cmp);
s[num-m].local_rank = 1;
for(int j=num-m+1;j<num;j++){
if(s[j].score == s[j-1].score)
s[j].local_rank = s[j-1].local_rank;
else
s[j].local_rank = j-(num-1-m);
}
}
printf("%d\n",num-1);
sort(s+1,s+num,cmp);
int r=1;
for(int i=1;i<num;i++){
if(i>1 && s[i].score != s[i-1].score)
r = i;
printf("%s", s[i].id);
printf(" %d %d %d\n",r,s[i].local_number,s[i].local_rank);
}
return 0;
}
刚开始开的Student数组为300,因为题目中K<=300,看资料开的数组是30010还很诧异,后来想明白了,数组长度应该是>n*m,即组数*每组测试数