(。・∀・)ノ゙嗨 题解
2024-09-10 22:37:14
发布于:广东
2阅读
0回复
0点赞
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
// 定义一个结构体来存储选手的信息
struct Athlete {
string name;
int gold;
int silver;
int bronze;
int total; // 总奖牌数
int index; // 记录输入顺序
};
// 比较函数,用于排序
bool compare(const Athlete& a, const Athlete& b) {
if (a.total != b.total) return a.total > b.total; // 首先按总奖牌数排序
if (a.gold != b.gold) return a.gold > b.gold; // 然后按金牌数排序
if (a.silver != b.silver) return a.silver > b.silver; // 然后按银牌数排序
return a.index < b.index; // 如果都相同,按输入顺序输出
}
int main() {
int n;
cin >> n;
vector<Athlete> athletes(n);
for (int i = 0; i < n; ++i) {
Athlete athlete;
cin >> athlete.name >> athlete.gold >> athlete.silver >> athlete.bronze;
athlete.total = athlete.gold + athlete.silver + athlete.bronze;
athlete.index = i; // 记录输入顺序
athletes[i] = athlete;
}
// 使用自定义的比较函数进行排序
sort(athletes.begin(), athletes.end(), compare);
// 输出排序后的结果
for (const Athlete& athlete : athletes) {
cout << athlete.name << " " << athlete.total << endl;
}
return 0;
}
简单
这里空空如也
有帮助,赞一个