【深基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;
}