高质量题解|A83229.比赛排名
2026-02-26 20:43:29
发布于:湖北
1阅读
0回复
0点赞
解题思路
结构体中有 3 个元素,分别是名字(string)、AC 数量(int)以及罚时(int)
排序规则题目中也给了:先假设解决题目数量不一样,按从大到小的方法排序;如果一样,则假设罚时不一样,按从低到高的方法排序(从小到大);如果以上都不符合,则按字典序对名称进行升序排序
代码
#include <bits/stdc++.h>
using namespace std;
struct stu{
string name;
int ac,wa;
}a[200001];
bool cmp(stu x,stu y){
if(x.ac != y.ac){
return x.ac > y.ac;
}else if(x.wa != y.wa){
return x.wa < y.wa;
}else{
return x.name > y.name;
}
}
int main(){
int n;
cin >> n;
for(int i = 1;i <= n;i++){
cin >> a[i].name >> a[i].ac >> a[i].wa;
}
sort(a + 1,a + n + 1,cmp);
for(int i = 1;i <= n;i++){
cout << a[i].name << endl;
}
return 0;
}
时间复杂度
O(n log n)
这里空空如也








有帮助,赞一个