这,这,这不对吧

P1093 [NOIP2007 普及组] 奖学金

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; 学号按从小到大排序


|