算法知识点: 排序,多关键字排序

复杂度:

解题思路:

多关键字排序即可。

C++ 代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
 
using namespace std;
 
const int N = 310;
 
struct Person
{
    int chinese, math, english;
    int total;
    int id;
    bool operator< (const Person& W)const
    {
        if (total != W.total) return total > W.total;
        if (chinese != W.chinese) return chinese > W.chinese;
        return id < W.id;
    }
}person[N];
 
int main()
{
    int n;
    scanf("%d", &n);
    for (int i = 1; i <= n; i ++ )
    {
        int chinese, math, english;
        scanf("%d%d%d", &chinese, &math, &english);
        int total = chinese + math + english;
        person[i] = {chinese, math, english, total, i};
    }
 
    sort(person + 1, person + 1 + n);
 
    for (int i = 1; i <= 5; i ++ ) printf("%d %d\n", person[i].id, person[i].total);
    return 0;
}


另外,牛客暑期NOIP真题班限时免费报名
报名链接:https://www.nowcoder.com/courses/cover/live/248
报名优惠券:DCYxdCJ