高质量题解|A45781.奖品分发
2026-02-19 23:14:56
发布于:北京
0阅读
0回复
0点赞
解题思路
结构体 stu 中有三个元素:a , x , y ,分别对应为学号、总分和是否有进步
排序规则为 因为奖品每人都有但每一份奖品都不一样,所以唐老师给奖品排好了顺序,准备按照进步和总分两方面评价,有进步的同学先发,未进步的同学后发。都有进步或都未进步的同学中,总分较高的同学能拿到靠前的奖品,唐老师希望程序能帮他算出拿到奖品的顺序。对于进步情况和总分都相同的同学,则按照学号从小到大输出。 根据题意,我们得知先从是否有进步开始降序排序;再到总分进行降序排序;最后按学号升序排序
最后输出学号
代码
#include <bits/stdc++.h>
using namespace std;
struct stu{
int a,x,y;
}a[1010];
bool cmp(stu left,stu right){
if(left.y != right.y){
return left.y > right.y;
}else if(left.x != right.x){
return left.x > right.x;
}else{
return left.a < right.a;
}
}
int main(){
int n;
cin >> n;
for(int i = 1;i <= n;i++){
cin >> a[i].a >> a[i].x >> a[i].y;
}
sort(a + 1,a + n + 1,cmp);
for(int i = 1;i <= n;i++){
cout << a[i].a << endl;
}
return 0;
}
这里空空如也








有帮助,赞一个