题目描述
cjf君想调查学校OI组每个同学的生日,并按照从大到小的顺序排序。但cjf君最近作业很多,没有时间,所以请你帮她排序。
输入格式
有2行,
第1行为OI组总人数n;
第2行至第n+1行分别是每人的姓名s、出生年y、月m、日d。
输出格式
有n行,
即n个生日从大到小同学的姓名。(如果有两个同学生日相同,输入靠后的同学先输出)
代码
#include <bits/stdc++.h>
#define MAXN 2000005
#define ll long long
using namespace std;
struct node
{
string name;
int year;
int month;
int day;
int level;
}stu[202];
bool cmp(node a,node b)
{
if(a.year!=b.year)
{
return a.year<b.year;
}else if(a.month!=b.month)
{
return a.month<b.month;
}else if(a.day!=b.day)
{
return a.day<b.day;
}else
{
return a.level>b.level;
}
}
int main()
{
int n;
cin>>n;
for(int i=0; i<n; i++)
{
cin>>stu[i].name>>stu[i].year>>stu[i].month>>stu[i].day;
stu[i].level = i;
}
sort(stu,stu+n,cmp);
int i,j,x=0;
bool flag=false;
for( i=0; i<n; i++)
{
cout<<stu[i].name<<endl;
}
return 0;
}