题目描述
小码君想调查学校每个同学的生日,并按照年龄从大到小的顺序排序。但小码君最近作业很多,没有时间,所以请你帮他排序。
输入格式
有2行,
第1行为学校总人数n(n<=10000);
第2行至第n+1行分别是每人的姓名s(名字长度不超过100)、出生年y、月m、日d。
输出格式
有n行,
每行输出一个同学的姓名,年龄大的先输出。(如果有两个同学生日相同,输入靠后的同学先输出)
样例
样例输入
复制4
Yangchu 1992 4 23
Qiujingya 1993 10 13
Luwu 1991 8 1
rongcheng 1993 10 13
样例输出
复制Luwu
Yangchu
rongcheng
Qiujingya
#include<bits/stdc++.h>
using namespace std;
struct z
{
char name[1000];
int m;
int n;
int j;
int cnt;
}x[10000];
bool cmp(z q,z w)
{
if(q.n==w.n)
{
if(q.m==w.m)
{
if(q.j==w.j)
{
return q.cnt>w.cnt;
}else return q.j<w.j;
}else return q.m<w.m;
}else return q.n<w.n;
}
int main()
{
int a;
cin>>a;
for(int l=0;l<a;l++)
{
cin>>x[l].name>>x[l].n>>x[l].m>>x[l].j;
x[l].cnt=l;
}
sort(x,x+a,cmp);
for(int l=0;l<a;l++)
{
cout<<x[l].name<<endl;
}
return 0;
}