【C++ 真题】P1104 生日

P1104 生日

题目描述

cjf 君想调查学校 OI 组每个同学的生日,并按照年龄从大到小的顺序排序。但 cjf 君最近作业很多,没有时间,所以请你帮她排序。

输入格式

输入共有 n + 1 n + 1 n+1 行,

第 1 1 1 行为 OI 组总人数 n n n;

第 2 2 2 行至第 n + 1 n+1 n+1 行分别是每人的姓名 s s s、出生年 y y y、月 m m m、日 d d d。

输出格式

输出共有 n n n 行,

即 n n n 个生日从大到小同学的姓名。(如果有两个同学生日相同,输入靠后的同学先输出)

输入输出样例 #1

输入 #1

复制代码
3
Yangchu 1992 4 23
Qiujingya 1993 10 13
Luowen 1991 8 1

输出 #1

复制代码
Luowen
Yangchu
Qiujingya

说明/提示

数据保证, 1 < n < 100 1<n<100 1<n<100, 1 ≤ ∣ s ∣ < 20 1\leq |s|<20 1≤∣s∣<20。保证年月日实际存在,且年份 ∈ 1960 , 2020 \in 1960,20201960,2020

##题解

cpp 复制代码
#include "bits/stdc++.h"
using namespace std;
const int N = 1e2+7;
int n;

struct Node{
	string s;
	int y, m, d, id;
}g[N];

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

int main(){
	cin>>n;
	for(int i=1;i<=n;++i){
		cin>>g[i].s>>g[i].y>>g[i].m>>g[i].d;
		g[i].id = i;
		
	}
	sort(g+1, g+1+n, cmp);
	for(int i=1;i<=n;++i){
		cout<<g[i].s<<endl;
	} 
	
	return 0;
}
相关推荐
fqbqrr8 小时前
2606C++,C++构的多态
开发语言·c++
biter down8 小时前
从 0 到 1 搭建 Python 接口自动化测试框架(博客系统实战)
开发语言·python
小欣加油8 小时前
leetcode56 合并区间
c++·算法·leetcode·职场和发展
lqqjuly8 小时前
前沿算法深度解析(二)
人工智能·算法·机器学习
Yolo_TvT9 小时前
C++:析构函数
c++
徐小夕10 小时前
万字长文!千万级文档 RAG 知识库系统落地实践
前端·算法·github
threelab10 小时前
Three.js 物理模拟着色器 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器
武器大师7210 小时前
lv_binding_js 代码解读
开发语言·javascript·ecmascript
不知名的老吴10 小时前
线程的生命周期之线程“插队“
java·开发语言·python