感觉陈越姥姥很喜欢出这类排名中存在并列的题,但是,这还是道水题。。。
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct node
{
string rnum;
int score;
int frank;
int lnum;
int lrank;
};
node arr[30100];
int compp(node a,node b)
{
if(a.score!=b.score)
return a.score>b.score;
return a.rnum<b.rnum;
}
int main()
{
int i,n,m,j,pj=0;
cin>>n;
int score,cur,num;
for(i=1;i<=n;i++)
{
cin>>m;
string s;
m+=pj;
for(j=pj;j<m;j++)
{
cin>>arr[j].rnum>>arr[j].score;
arr[j].lnum=i;
}
sort(arr+pj,arr+m,compp);
cur=arr[pj].score;
num=1;
for(j=pj;j<m;j++)
{
if(arr[j].score<cur)
{
cur=arr[j].score;
num=j-pj+1;
}
arr[j].lrank=num;
}
pj=j;
}
sort(arr,arr+m,compp);
cur=arr[0].score;
num=1;
for(j=0;j<m;j++)
{
if(arr[j].score<cur)
{
cur=arr[j].score;
num=j+1;
}
arr[j].frank=num;
}
cout<<m<<endl;
for(i=0;i<m;i++)
cout<<arr[i].rnum<<" "<<arr[i].frank<<" "<<arr[i].lnum<<" "<<arr[i].lrank<<endl;
return 0;
}