题目描述
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
思路
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
typedef struct
{
char name[21];
int year,month,day;
}lxydl;
bool operator<(const lxydl &a, const lxydl &b)
{
if(a.year != b.year)
return a.year<b.year;
if(a.month != b.month)
return a.month<b.month;
if(a.day != b.day)
return a.day<b.day;
}
lxydl a[101];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int n,m,i,j;
cin>>n;
for(i=1;i<=n;i++)
{
int a1,b,c;char na[21];
cin>>na>>a1>>b>>c;
a[i]=(node){na,a1,b,c};//get新写法
//cin>>a[i].name>>a[i].year>>a[i].month>>a[i].day;
}
stable_sort(a+1,a+n+1);//stl稳定排序
for(i=1;i<=n;i++)
{
cout<<a[i].name<<endl;
}
return 0;
}