1028. 人口普查(20)

注意特判合理人数为0,否则格式错误。很暴力的sort排序找出最大最小。

时间限制
200 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。

这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。

输入格式:

输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。

输出格式:

在一行中顺序输出有效生日的个数、最年长人和最年轻人的姓名,其间以空格分隔。

输入样例:

  1. 5
  2. John 2001/05/12
  3. Tom 1814/09/06
  4. Ann 2121/01/30
  5. James 1814/09/05
  6. Steve 1967/11/20

输出样例:

3 Tom John

  1. #include <cstdio>
  2. #include <algorithm>
  3. #include <cstring>
  4. using namespace std;
  5. const int MAXN = 100001;
  6. struct people{
  7. char name[8];
  8. int yy,mm,dd;
  9. }person[MAXN];
  10. bool proper(int y,int m,int d) //判断是否合理
  11. {
  12. if(y < 1814||(y == 1814&&(m < 9||(m == 9&&d < 6)))) return false;
  13. else if(y > 2014||(y == 2014&&(m > 9||(m == 9 && d>6)))) return false;
  14. else return true;
  15. }
  16. bool cmp(people a,people b) //比较函数cmp
  17. {
  18. if(a.yy != b.yy) return a.yy < b.yy;
  19. else if(a.mm != b.mm) return a.mm < b.mm;
  20. else if(a.dd != b.dd) return a.dd < b.dd;
  21. }
  22. int main()
  23. {
  24. int n,i,yt,mt,dt,k = 0;
  25. char s[8];
  26. scanf("%d",&n);
  27. for(i = 0;i < n; i++)
  28. {
  29. scanf("%s %d/%d/%d",&s,&yt,&mt,&dt);
  30. if(proper(yt,mt,dt))
  31. {
  32. strcpy(person[k].name,s); //strcpy(s1,s2) ,s2是源串,s1是目的串
  33. person[k].yy = yt;
  34. person[k].mm = mt;
  35. person[k++].dd = dt;
  36. }
  37. }
  38. if(k != 0){
  39. sort(person,person+k,cmp); //用sort找出最老最小
  40. // for(i = 0;i < k; i++){
  41. // printf("%s %d/%d/%d\n",person[i].name,person[i].yy,person[i].mm,person[i].dd);
  42. // }
  43. printf("%d %s %s",k,person[0].name,person[k-1].name);
  44. }
  45. else{ //特判合法人数为0
  46. printf("0");
  47. }
  48. return 0;
  49. }

  

PATB 1028. 人口普查(20)的更多相关文章

  1. PAT乙级 1028. 人口普查(20)

    1028. 人口普查(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 某城镇进行人口普查,得到了全体居民的 ...

  2. PAT-乙级-1028. 人口普查(20)

    1028. 人口普查(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 某城镇进行人口普查,得到了全体居民的 ...

  3. PAT 1028 人口普查(20)(STL-set+思路+测试点分析)

    1028 人口普查(20)(20 分) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超 ...

  4. PAT (Basic Level) Practise (中文)-1028. 人口普查(20)

    PAT (Basic Level) Practise (中文)-1028. 人口普查(20)   http://www.patest.cn/contests/pat-b-practise/1028 某 ...

  5. PAT 1028. 人口普查(20)

    某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过200岁的老人,而今天是2014年9月 ...

  6. PAT Basic 1028 人口普查 (20 分)

    某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 ...

  7. 1028 人口普查 (20 分)C语言

    题目描述 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过200岁的老人,而今天是20 ...

  8. PAT(B) 1028 人口普查(C)字符串

    题目链接:1028 人口普查 (20 point(s)) 题目描述 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是 ...

  9. P 1028 人口普查

    转跳点:

随机推荐

  1. WPF 圆形Loading

    原文:WPF 圆形Loading 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a771948524/article/details/9271933 ...

  2. python 教程 第三章、 运算符与表达式

    第三章. 运算符与表达式 1)    运算符 + 加 - 减 * 乘 ** 幂 / 除 // 取整除 % 取模 << 左移 >> 右移 & 按位与 | 按位或 ^ 按位 ...

  3. WPF 图形绘制 及各种线帽、箭头的实现

    原文:WPF 图形绘制 及各种线帽.箭头的实现  /// <summary>     /// 矩形类     /// </summary>     public sealed ...

  4. 从加载DLL的中获取放置于Resources文件夹中资源字典的几种方法

    原文:从加载DLL的中获取放置于Resources文件夹中资源字典的几种方法 主程序 为 Main_Test.exe 被加载的DLL 为 Load_Test.dll  此DLL 中 有一个 文件夹Re ...

  5. WPF 动态绑定listview的列内容

    Binding binding = new Binding(); binding.Path = new PropertyPath("State"); listViewState.D ...

  6. WPF数据模板和控件模板

     WPF中有控件模板和数据模板,控件模板可以让我们自定义控件的外观,而数据模板定义了数据的显示方式,也就是数据对象的可视结构,但是这里有一个问题需要考虑,数据是如何显示出来的?虽然数据模板定义了数 ...

  7. 在 win10 环境下,设置自己写的 程序 开机自动 启动的方法

    原文:在 win10 环境下,设置自己写的 程序 开机自动 启动的方法 1.是登录自己用户时才能开机启 C:\Users\username\AppData\Roaming\Microsoft\Wind ...

  8. 原生Js监听普通dom尺寸变化

    原生Js监听普通dom尺寸变化 具体做法有以下几种: 初始化项目后,轮询,反复查看 dom 尺寸是否变化,这种一听就感觉不好,开销太大. 监听元素的滚动事件,在 目标 dom 里面包裹一个同等大小的 ...

  9. 常用的shell(备份数据库、备份网站、切割访问日志)

    备份网站程序 #!/bin/bash /bin/tar czf /mnt/backup_website/web_$(date +%Y%m%d_%H%M%S).gz.tar /mnt/wwwroot/w ...

  10. 【Git】生成Patch和使用Patch

    1.生成Patch(俗称快照) 先来看看repo manifest 的用法 <1>cd /工作目录/项目目录/.repo/manifests <2>repo manifest ...