#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;
struct Test{
string reg;
int score;
int location;
int rk,local_rk;
};
bool cmp(Test a,Test b)
{
return a.score>b.score;
}
bool cmpx(Test a,Test b)
{
if(a.score!=b.score) return a.score>b.score;
else return a.reg<b.reg;
}
int main()
{
int n,k,i,j,cnt=0;
vector<Test> vi;
vector<Test> temp;
Test test;
cin>>n;
for(i=1;i<=n;i++){
cin>>k;
cnt+=k;
for(j=0;j<k;j++){
cin>>test.reg>>test.score;
test.location=i;
temp.push_back(test);
}
sort(temp.begin(),temp.end(),cmp);
temp[0].local_rk=1;
vi.push_back(temp[0]);
for(j=1;j<k;j++){
if(temp[j].score==temp[j-1].score) temp[j].local_rk=temp[j-1].local_rk;
else temp[j].local_rk=j+1;
vi.push_back(temp[j]);
}
temp.clear();
}
sort(vi.begin(),vi.end(),cmpx);
vi[0].rk=1;
for(i=1;i<cnt;i++){
if(vi[i].score==vi[i-1].score) vi[i].rk=vi[i-1].rk;
else vi[i].rk=i+1;
}
cout<<cnt<<endl;
for(i=0;i<cnt;i++){
cout<<vi[i].reg<<' '<<vi[i].rk<<' '<<vi[i].location<<' '<<vi[i].local_rk<<endl;
}
return 0;
}
来源:CSDN
作者:MIKET_T
链接:https://blog.csdn.net/MIKET_T/article/details/104784501