Note
Code:
#include<bits/stdc++.h>
using namespace std;
struct student{
string num;
int score,location,finalrank,localrank;
}stu[30005];
bool compare(student a,student b){
if(a.score!=b.score)
return a.score>b.score;
else
return a.num<b.num;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("data.txt","r",stdin);
#endif
int n,k,index=0,sum=0;
cin>>n;
for(int i=1;i<=n;i++){
cin>>k;
sum+=k;
for(int j=0;j<k;j++){
cin>>stu[index].num>>stu[index].score;
stu[index].location=i;
index++;
}
sort(stu+index-k,stu+index,compare);
for(int j=index-k,t=1;j<index;t++,j++){
stu[j].localrank=t;
if(j>(index-k)&&stu[j].score==stu[j-1].score)
stu[j].localrank=stu[j-1].localrank;
}
}
sort(stu,stu+index,compare);
for(int i=0;i<index;i++){
stu[i].finalrank=i+1;
if(i>0&&stu[i].score==stu[i-1].score)
stu[i].finalrank=stu[i-1].finalrank;
}
cout<<sum<<endl;
for(int i=0;i<sum;i++){
cout<<stu[i].num<<" "<<stu[i].finalrank<<" "<<stu[i].location<<" "<<stu[i].localrank<<endl;
}
return 0;
}