洛谷-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;
}