#include<iostream>
#include<algorithm>
using namespace std;
struct student{
int teamno;
string name;
int score;
int scoreno; //小组排名
int totalno; //总分排名
}stu[30000];
bool cmp1(student a,student b){
if(a.score!=b.score)
return a.score>b.score;
else
return a.name<b.name;
}
int main()
{
int n;
cin>>n;
int now=0;
for(int i=1;i<=n;i++)
{
int m;
cin>>m;
for(int j=1;j<=m;j++)
{
string name;int score;
cin>>name>>score;
stu[now].name=name;
stu[now].teamno=i;
stu[now].score=score;
now++;
}
sort(stu+now-m,stu+now,cmp1);
stu[now-m].scoreno=1;
for(int k=1;k<m;k++)
{
stu[now-m+k].scoreno=k+1;
if(stu[now-m+k].score==stu[now-m+k-1].score)
stu[now-m+k].scoreno=stu[now-m+k-1].scoreno;
}
}
sort(stu,stu+now,cmp1);
stu[0].totalno=1;
for(int i=1;i<now;i++)
{
stu[i].totalno=i+1;
if(stu[i].score==stu[i-1].score)
stu[i].totalno=stu[i-1].totalno;
}
cout<<now<<endl;;
for(int i=0;i<now;i++)
{
cout<<stu[i].name<<' '<<stu[i].totalno<<' '<<stu[i].teamno<<' '<<stu[i].scoreno<<endl;
}
return 0;
}
提交之后测试点1一直答案错误,结果一看是
sort(stu,stu+now,cmp1);写成了sort(stu,stu+now-1,cmp1); 。。。
真是蠢死了 now的值就是人综合 所以直接加now就可以了
1025 PAT Ranking (25 分)
最新推荐文章于 2022-02-24 11:01:37 发布