【深基7.例9】最厉害的学生 · 教师题解

【深基7.例9】最厉害的学生

解题思路

依次读入学生信息,比较总分;只有当前总分严格大于历史最高总分时才替换。

正确性说明

处理前 k 人后始终保存最高总分中最早出现者。更高分必须替换,同分保持原记录,因此最终满足两项要求。

易错点

同分不能替换;输出姓名与三科原成绩,而不是总分。

复杂度

时间 O(N),空间 O(1),姓名长度有常数上界。

参考代码(C++11)

#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin >> n;
    string best;
    int ba = 0, bb = 0, bc = 0, mx = -1;
    while (n--) {
        string s;
        int a, b, c;
        cin >> s >> a >> b >> c;
        if (a + b + c > mx) {
            mx = a + b + c;
            best = s;
            ba = a;
            bb = b;
            bc = c;
        }
    }
    cout << best << " " << ba << " " << bb << " " << bc << "\n";
    return 0;
}
返回题目