#include <bits/stdc++.h>
using namespace std;
const int N = 5e4 + 5;
int n;
struct Node {
string id;
int age, j;
bool f;
}a[N];
bool cmp(Node x, Node y) {
if (x.f && y.f) {//两个都是老年人
if (x.age == y.age) return x.j < y.j;//年龄相同
return x.age > y.age;//不同
}
if (x.f + y.f == 1) return x.f > y.f;//谁是老年人谁优先
return x.j < y.j;//否则,按年龄排序
}
int main() {
cin >> n;
for (int i = 1;i <= n;i++) {
cin >> a[i].id >> a[i].age;
if (a[i].age >= 60) a[i].f = 1;//判断是不是老年人
else a[i].f = 0;
a[i].j = i;//顺序
}
sort(a + 1, a + n + 1, cmp);//排序
for (int i = 1;i <= n;i++) {
cout << a[i].id << " " << a[i].age << endl;
}
return 0;
}
病人排队最简洁的代码(无压行)
最新推荐文章于 2023-08-03 10:40:15 发布
本文介绍了一个简单的C++程序,该程序实现了对一组人员按照是否为老年人及年龄进行优先级排序的功能。通过定义结构体和比较函数,实现了老年人优先且内部按年龄降序排列的规则。
1095

被折叠的 条评论
为什么被折叠?



