Camelliail @ 2024-02-13 22:35:22
#include<bits/stdc++.h>
using namespace std;
/*P1104 生日*/
struct oi {
string s;
int y, m, d;
}a[105];
bool cmp(oi a, oi b) {
if (a.y < b.y) return true;
else if (a.y == b.y && a.m < b.m) return true;
else if (a.y == b.y && a.m == b.m && a.d < b.d) return true;
else return false;
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> a[i].s >> a[i].y >> a[i].m >> a[i].d;
}
sort(a + 1, a + 1 + n, cmp);
for (int i = 1; i <= n; ++i) {
cout << a[i].s << endl;
}
return 0;
}
by OIerWu_829 @ 2024-02-13 22:41:15
@Camelliail
其实有点不懂你这个 cmp
函数,给你推荐一个写法。
还有一个点,你好像没有注意到?
如果有两个同学生日相同,输入靠后的同学先输出。
bool cmp(oi x, oi y) {
if (x.y != y.y) return x.y < y.y;
if (x.m != y.m) return x.m < y.m;
if (x.d != y.d) return x.d < y.d;
return x.pm > y.pm; // 输入顺序
}
by Camelliail @ 2024-02-13 22:46:12
@wzj0829 刚刚那个点没注意到,已经过啦!谢谢大佬!!!