【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;
}
相关推荐
web安全工具库3 小时前
告别刀耕火种:用 Makefile 自动化 C 语言项目编译
linux·运维·c语言·开发语言·数据库·算法·自动化
红糖生姜3 小时前
P12874 [蓝桥杯 2025 国 Python A] 巡逻||题解||图论
c++·蓝桥杯·图论
小小测试开发3 小时前
Python Arrow库:告别datetime繁琐,优雅处理时间与时区
开发语言·前端·python
海蓝可知天湛3 小时前
利用Genspark自定义智能体:算法竞赛测试数据反推与生成工具
算法·aigc
鸽鸽程序猿3 小时前
【项目】【抽奖系统】注册功能实现
java·开发语言
BothSavage3 小时前
Qwen3-VL-8B-Instruct推理测试transformer+sglang双版本
算法
尤超宇4 小时前
YOLOv3 目标检测算法核心技术
算法·yolo·目标检测
云泽8084 小时前
C/C++内存管理详解:从基础原理到自定义内存池原理
java·c语言·c++
weixin_307779134 小时前
在Linux服务器上使用Jenkins和Poetry实现Python项目自动化
linux·开发语言·python·自动化·jenkins
润 下4 小时前
C语言——深入解析C语言指针:从基础到实践从入门到精通(四)
c语言·开发语言·人工智能·经验分享·笔记·程序人生·其他