洛谷 P1104 生日

题目描述

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

说明

数据规模

1<n<100

length(s)<20

思路:排序

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n;
struct nond{
    int year,month,day,id;
}child[101];
char s[101][21];
int cmp(nond a,nond b){
    if(a.year==b.year)
        if(a.month==b.month)
            if(a.day==b.day)    return a.id>b.id;
            else return a.day<b.day;
        else return a.month<b.month;
    else    return a.year<b.year;
}
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%s %d%d%d",s[i],&child[i].year,&child[i].month,&child[i].day);
        child[i].id=i;
    }
    sort(child+1,child+1+n,cmp);
    for(int i=1;i<=n;i++)
        cout<<s[child[i].id]<<endl;
}

 

posted @ 2017-11-16 21:22  一蓑烟雨任生平  阅读(311)  评论(0编辑  收藏  举报