洛谷-P1104 生日

洛谷-P1104 生日

原题链接:https://www.luogu.com.cn/problem/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\)

C++代码

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

struct node {
    string s;
    int id, y, m, d;
}student[100];

bool cmp(node a, node b) {
    if (a.y == b.y)
        if (a.m == b.m)
            if (a.d == b.d)
                return a.id > b.id;
            else
                return a.d < b.d;
        else
            return a.m < b.m;
    else
        return a.y < b.y;
}

int main() {
    int n;
    cin >> n;
    for (int i=0; i<n; ++i) {
        student[i].id = i;
        cin >> student[i].s
            >> student[i].y
            >> student[i].m
            >> student[i].d;
    }
    sort(student, student+n, cmp);
    for (int i=0; i<n; ++i)
        cout << student[i].s << endl;
    return 0;
}
posted @ 2020-08-17 08:50  yuzec  阅读(609)  评论(0编辑  收藏  举报