竟然还有不足13位的id,要补0,怪不得最后一个测试点不过,,,
/*
先把local的序排好,存到总的vector里
再sort总的
*/
#include<cstdio>
#include<cstring>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int temp[1005],a[1005];
struct student{
int score,loc,locrank,finrank;
long long id;
};
//先对score排,再对id排
bool cmp1(student a,student b){
if(a.score!=b.score)
return a.score>b.score;
else
return a.id<b.id;
}
int main() {
int n,k;
scanf("%d",&n);
vector<student> stu; //vector存结构体
for(int i=0;i<n;i++){
cin>>k;
vector<student> v(k);
for(int j=0;j<k;j++){
cin>>v[j].id;
cin>>v[j].score;
v[j].loc=i+1;
}
sort(v.begin(),v.end(),cmp1);
v[0].locrank=1;
stu.push_back(v[0]);
for(int j=1;j<k;j++){ //!!!有并列成绩的处理方法
v[j].locrank=(v[j].score==v[j-1].score)?v[j-1].locrank:(j+1);
stu.push_back(v[j]);
}
}
sort(stu.begin(),stu.end(),cmp1);
stu[0].finrank=1;
for(int i=1;i<stu.size();i++)
stu[i].finrank=(stu[i].score==stu[i-1].score)? stu[i-1].finrank :(i+1);
cout<<stu.size()<<endl;
for(int i=0;i<stu.size();i++)
printf("%013lld %d %d %d\n", stu[i].id,stu[i].finrank,stu[i].loc,stu[i].locrank);
return 0;
}