华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1107|回复: 2
打印 上一主题 下一主题

P1104 生日

[复制链接]

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
跳转到指定楼层
楼主
发表于 2018-4-21 16:57:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目描述
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

回复

使用道具 举报

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
沙发
 楼主| 发表于 2018-4-21 16:57:30 | 只看该作者
多关键字排序
回复 支持 反对

使用道具 举报

9

主题

158

帖子

470

积分

华一学生

积分
470
QQ
板凳
发表于 2018-8-27 15:16:04 | 只看该作者
  1. #include<algorithm>
  2. #include<iostream>
  3. using namespace std;
  4. struct student
  5. {
  6.     int y,m,d,id;
  7.     string name;
  8. } a[9999];
  9. bool operator< (student a,student b)
  10. {
  11.     if(a.y>b.y) return 0;
  12.     else if(a.y<b.y) return 1;
  13.     if(a.m>b.m) return 0;
  14.     else if(a.m<b.m) return 1;
  15.     if(a.d>b.d) return 0;
  16.     else if(a.d<b.d) return 1;
  17.     return a.id>b.id;
  18. }
  19. int n;
  20. int main()
  21. {
  22.     cin>>n;
  23.     for(int i=1; i<=n; i++)cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d,a[i].id=i;
  24.     sort(a+1,a+n+1);
  25.     for(int i=1; i<=n; i++)cout<<a[i].name<<endl;
  26.     return 0;
  27. }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-11-2 06:28 , Processed in 0.100021 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表