1 条题解
-
0
三轮积分赛 题解
思路
在结构体中额外保存
total和best,读入时同步计算。排序时必须严格按照“总分、单轮最高分、编号”三个关键字依次比较。参考代码
#include <bits/stdc++.h> using namespace std; struct Player { int id; string name; int score[3]; int total; int best; }; bool cmp(const Player &a, const Player &b) { if (a.total != b.total) return a.total > b.total; if (a.best != b.best) return a.best > b.best; return a.id < b.id; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, k; cin >> n >> k; vector<Player> a(n); for (auto &p : a) { cin >> p.id >> p.name; p.total = 0; p.best = 0; for (int i = 0; i < 3; ++i) { cin >> p.score[i]; p.total += p.score[i]; p.best = max(p.best, p.score[i]); } } sort(a.begin(), a.end(), cmp); for (int i = 0; i < k; ++i) { cout << i + 1 << ' ' << a[i].id << ' ' << a[i].name << ' ' << a[i].total << ' ' << a[i].best << '\n'; } return 0; }
- 1
信息
- ID
- 5087
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者
粤公网安备44195502000195号