#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<map>
#include<queue>
using namespace std;
typedef long long LL;
struct node{
LL id;
int score;
int loca;
int fin_rank;
int loc_rank;
};
int n;
vector<node> loca_ss, all_ss;
bool compare(node a,node b){
if(a.score != b.score){
return a.score > b.score;
}
else{
return a.id < b.id;
}
}
void GetLocalRank(vector<node> &a){
sort(a.begin(),a.end(),compare);
int r = 1;
a[0].loc_rank = r;
for(int i = 1; i < a.size(); i++){
if(a[i].score == a[i - 1].score){
a[i].loc_rank = r;
}
else{
a[i].loc_rank = i + 1;
r = i + 1;
}
}
}
void GetFinRank(vector<node> &a){
sort(a.begin(),a.end(),compare);
int r = 1;
a[0].fin_rank = r;
for(int i = 1; i < a.size(); i++){
if(a[i].score == a[i - 1].score){
a[i].fin_rank = r;
}
else{
a[i].fin_rank = i + 1;
r = i + 1;
}
}
}
int main(){
cin>>n;
for(int j = 1; j <= n; j++){
loca_ss.clear();
int k;
scanf("%d",&k);
for(int i = 0; i < k; i++){
node a;
scanf("%lld%d",&a.id,&a.score);
a.loca = j;
loca_ss.push_back(a);
}
GetLocalRank(loca_ss);
for(int i = 0; i < k; i++){
all_ss.push_back(loca_ss[i]);
}
}
GetFinRank(all_ss);
printf("%d\n",all_ss.size());
for(int i = 0; i < all_ss.size(); i++){
printf("%013lld %d %d %d\n",all_ss[i].id, all_ss[i].fin_rank, all_ss[i].loca, all_ss[i].loc_rank);
}
return 0;
}
1025. PAT Ranking (25)
最新推荐文章于 2022-06-21 16:06:59 发布