结义兄弟

795 词

题目描述

现在有一群同学都想结成异姓兄弟,规定按照年龄大小来从大到小排序。你来搜集这些同学的信息:姓名和对应的出生年月日。且他们不存在同年同月同日生的情况,你来帮助他们排个序。

输入

输入第一行有一个整数N(0< N < 1000)表示N个同学。

接下来有N行,且每行都有一个字符串(全为小写字母且长度小于30)和3个整数 ,分别表示姓名、年、月、日。

所有同学的年龄均为1900年以后的。

输出

请按从大到小的顺序输出所有同学的姓名。

假设不存在同年同月同日生的同学。

样例输入

1
2
3
4
5
4
zhangsan 2000 7 8
lisi 2000 5 2
wanger 2001 5 1
mazi 2000 5 1

样例输出

1
2
3
4
mazi 
lisi
zhangsan
wanger

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<bits/stdc++.h>
using namespace std;
struct Person {
char name[100];
int y, m, d;
};
const int maxn = 1000 + 10;
Person p[maxn];
int n;
bool cmp(Person a, Person b) {
if (a.y != b.y)return a.y < b.y;
if (a.m != b.m)return a.m < b.m;
return a.d < b.d;
}
int main() {
cin >> n;
for (int i = 0; i < n; i++)cin >> p[i].name >> p[i].y >> p[i].m >> p[i].d;
sort(p, p + n, cmp);
for (int i = 0; i < n; i++)cout << p[i].name << endl;
return 0;
}