洛谷-P1104 生日
洛谷-P1104 生日
题目描述
cjf
君想调查学校OI
组每个同学的生日,并按照从大到小的顺序排序。但cjf
君最近作业很多,没有时间,所以请你帮她排序。
输入格式
有\(2\)行,
第\(1\)行为OI
组总人数\(n\);
第\(2\)行至第\(n+1\)行分别是每人的姓名\(s\)、出生年\(y\)、月\(m\)、日\(d\)。
输出格式
有\(n\)行,
即\(n\)个生日从大到小同学的姓名。(如果有两个同学生日相同,输入靠后的同学先输出)
输入输出样例
输入 #1
3
Yangchu 1992 4 23
Qiujingya 1993 10 13
Luowen 1991 8 1
输出 #1
Luowen
Yangchu
Qiujingya
说明/提示
数据规模
\(1<n<100\)
\(length(s)<20\)
C++代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
struct node {
string s;
int id, y, m, d;
}student[100];
bool cmp(node a, node b) {
if (a.y == b.y)
if (a.m == b.m)
if (a.d == b.d)
return a.id > b.id;
else
return a.d < b.d;
else
return a.m < b.m;
else
return a.y < b.y;
}
int main() {
int n;
cin >> n;
for (int i=0; i<n; ++i) {
student[i].id = i;
cin >> student[i].s
>> student[i].y
>> student[i].m
>> student[i].d;
}
sort(student, student+n, cmp);
for (int i=0; i<n; ++i)
cout << student[i].s << endl;
return 0;
}