xingff @ 2024-01-13 15:52:17
这是我的代码
#include <bits/stdc++.h>
using namespace std;
struct stu
{
int ch,sc,xh;
};
stu a[301];
bool cmp(stu a,stu b)
{
if(a.sc!=b.sc)return a.sc>b.sc;
else if(a.ch!=b.ch)return a.ch>b.ch;
return a.xh>b.xh;
}
int main()
{
int n,ms,en;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].ch>>ms>>en;
a[i].sc=a[i].ch+ms+en;
a[i].xh=i;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=5;i++)
cout<<a[i].xh<<" "<<a[i].sc<<"\n";
}
在#8错了求教...2333
by xiaoshumiao @ 2024-01-13 15:59:07
@xingff
如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。
你是学号大的先输出。
by OIerWu_829 @ 2024-01-13 15:59:27
@xingff a.xh>b.xh
a.xh<b.xh
试试?
by very_easy @ 2024-01-13 16:00:28
@xingff 第12行应改为 return a.xh<b.xh;
学号按从小到大排序