排序
#include<cstdio>
#include<string.h>
#include<algorithm>
using namespace std;
const int N=30002;
struct node{
char id[14];
int rank,loc,locrank,score;
}p[N];
int cmp(node a,node b){
if(a.score==b.score)
return strcmp(a.id,b.id)<0;
return a.score>b.score;
}
int main(){
int n,k;
scanf("%d",&n);
int first=0,end=0;
for(int i=1;i<=n;i++){
scanf("%d",&k);
first=end;
while(k--){
scanf("%s %d",p[end].id,&p[end].score);
p[end++].loc=i;
}
//locrank
sort(p+first,p+end,cmp);
p[first].locrank=1;
for(int j=first+1;j<end;j++){
if(p[j].score==p[j-1].score)
p[j].locrank=p[j-1].locrank;
else
p[j].locrank=j-first+1;
}
}
//rank
sort(p,p+end,cmp);
p[0].rank=1;
for(int i=1;i<end;i++){
if(p[i].score==p[i-1].score)
p[i].rank=p[i-1].rank;
else
p[i].rank=i+1;
}
printf("%d\n",end);
for(int i=0;i<end;i++)
printf("%s %d %d %d\n",p[i].id,p[i].rank,p[i].loc,p[i].locrank);
}