题目描述
cjf
君想调查学校OI
组每个同学的生日,并按照从大到小的顺序排序。但cjf
君最近作业很多,没有时间,所以请你帮她排序。
输入格式
有2行,
第1行为OI
组总人数�;
第2行至第�+1行分别是每人的姓名�、出生年�、月�、日�。
输出格式
有�行,
即�个生日从大到小同学的姓名。(如果有两个同学生日相同,输入靠后的同学先输出)
输入输出测试点
输入 #1
复制
3 Yangchu 1992 4 23 Qiujingya 1993 10 13 Luowen 1991 8 1
输出 #1
复制
Luowen Yangchu Qiujingya
#include<iostream>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#include<cmath>
#include<cstdio>
using namespace std;
int n;
struct node{
string name;
int year,mon,day;
int level;
}nn[105];
bool cmp(node a,node b){
if(a.year != b.year)
return a.year < b.year;
else{
if(a.mon != b.mon) return a.mon < b.mon;
else if(a.day == b.day && a.mon == b.mon) return a.level > b.level;
else if(a.day != b.day && a.mon == b.mon) return a.day < b.day;
}
}
int main(){
cin>>n;
for(int i = 1; i <= n; ++i)
{
cin>>nn[i].name>>nn[i].year>>nn[i].mon>>nn[i].day;
nn[i].level = i;
}
stable_sort(nn + 1,nn + n + 1,cmp);
for(int i = 1; i <= n; ++i) cout<<nn[i].name<<endl;
return 0;
}