【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,2020 ∈1960,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;
}
相关推荐
aqiu11111126 分钟前
【C++算法打怪专栏】8. 字符串转换整数 (atoi)
开发语言·c++·算法
爱吃香菜的初学者33 分钟前
十四.Linux——消息队列
linux·运维·开发语言
迅猛龙办公室1 小时前
python实现倒序输出数字
开发语言·python
h39745 小时前
DirectShow过滤器开发-视频源过滤器
c++·windows·音视频·directshow
夏幻灵7 小时前
JavaScript this 面试:五种绑定规则、优先级与常见面试陷阱
开发语言·javascript·面试
程序猿编码7 小时前
榨干 RTX5090 算力!Qwen3 专用单卡推理引擎,手写C++/CUDA 算子实现 MTP 推测解码
开发语言·c++·大模型推理·qwen3·多模态推理
西飘客8 小时前
vs 怎么根据dll 生成lib文件
c++·qt
bkspiderx8 小时前
Qt 插件机制:动态扩展应用功能的核心框架
开发语言·qt·元数据·qt 插件·qpluginloader
程序员老陆9 小时前
深入理解 C++ thread_local:线程私有存储的正确打开方式
开发语言·c++·程序设计
沐晓时光9 小时前
C语言入门,深入理解指针(3)
c语言·开发语言