当前位置:首页 > 题解目录 > 正文内容

生日

亿万年的星光5年前 (2021-01-28)题解目录5213

【题目描述】

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

【输入描述】

有2行,

第1行为OI组总人数n;

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

【输出描述】

有n行,

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

【样例输入】

3
Yangchu 1992 4 23
Qiujingya 1993 10 13
Luowen 1991 8 1

【样例输出】

Luowen
Yangchu
Qiujingya

【数据规模】

1<n<100

length(s)<20

【参考答案】

#include<bits/stdc++.h>
using namespace std;
struct birthday
{
   string name; //学生姓名
    int year; //生日的年份
   int month; //生日的月
   int day; //生日的天
   int order;     //用户的输入顺序
};
birthday br[105]; //初始化
bool cmp(birthday x, birthday y)
{
   if(x.year!=y.year)
       return x.year<y.year; //先按照年份排序(年份小的年龄大)
   if(x.month!=y.month)
       return x.month<y.month; //按照月份排序
   if(x.day!=y.day)
       return x.day<y.day; //按照日排序
   else
       return x.order>y.order; //同年同月同日生,则按照顺序相反输出
   
}
int main()
{
   int n;
   cin>>n;
   for(int i=0;i<n;i++)
   {
       cin>>br[i].name>>br[i].year>>br[i].month>>br[i].day;
       br[i].order=i; //记录顺序
   }
   sort(br,br+n,cmp);
   for(int i=0;i<n;i++)
       cout<<br[i].name<<endl;
   return 0;
   
   
}



扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

【题解】公式成绩

【题目描述】学校的期中考试到了。 gp 老师一共收集到 n 个学生的成绩,每个学生有 5 科成绩,分别是语文、数学、英语、政治、历史。(ai,bi,ci,di,ei) gp 老师突发奇想,他用 m...

【题解】开花

【题解】开花

【题目描述】小A所在的学校又迎来了一年一度的开花活动,有 n 名学生被评为文学优秀奖,m 名学生被评为体育优秀奖。现已知两个奖项获奖同学的编号,每个同学都有唯一的编号。只有同时被评为文学优秀奖和体育优...

【题解】日期排序

【题目描述】有一些日期,日期格式为“MM/DD/YYYY”。编程将其按日期大小排列。【输入描述】无【输出描述】无【样例输入】15/12/1999 10/21/2003 10/22/2003 02...

【题解】合唱队形

【题目描写】N位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的KK位同学排成合唱队形。合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K,他们的身高分别为T1,T...

【题解】演讲大赛评分

【题目描述】最近"老王"很开心.他在大一的时候参加过数计学院的“软件小组”。告诉你个秘密,这个小组是个好地方,不但活动精彩而且有MM。 这不,这个小组举办了一个叫做“计算...

【题解】直方图

直方图(histogram.cpp)【题目描述】给定一个非负整数数组,统计里面每一个数的出现次数。我们只统计到数组里面最大的数。假设Fmax(Fmax<10000)是数组里最大的数,那么我们只统...