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

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

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

【输入样例】:

5
John 2001/05/12
Tom 1814/09/06
Ann 2121/01/30
James 1814/09/05
Steve 1967/11/20

【输出样例】:

3 Tom John

【注意点】:

  • 注意先输出的是最年轻的还是最年长的
  • 也有可能符合情况的生日是0个,所以最后只需要输出0,且0之后没有空格
  • 我用的是把所有符合情况的放入结构体中,再写bool cmp函数,利用sort函数进行排序。

【AC代码】:

#pragma warning(disable:4996)#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>using namespace std;struct person
{string name;int year;int month;int day;
};person p[100005];bool cmp(person a, person b)
{if (a.year != b.year)return a.year > b.year;else{if (a.month != b.month)return a.month > b.month;elsereturn a.day > b.day;}
}int main()
{string name;person p1;int n, y, m, d;int t = 0;scanf("%d", &n);while (n--){cin >> name;scanf("%d/%d/%d", &y, &m, &d);if (y < 1814 || y > 2014 || (y == 1814 && m < 9) || (y == 1814 && m == 9 && d < 6) || (y == 2014 && m > 9) || (y == 2014 && m == 9 && d > 6))continue;p1.name = name;p1.day = d;p1.month = m;p1.year = y;p[t++] = p1;}printf("%d", t);if (t != 0){sort(p, p + t, cmp);cout << " " << p[t - 1].name << " " << p[0].name;}return 0;
}

【PAT (Basic Level) 】1028 人口普查 (20 分)相关推荐

  1. 【2020模拟考试T3】【PAT乙】1028 人口普查 (20分) 字符串比较

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

  2. 【PAT乙级】1028 人口普查 (20 分)

    题目地址 #include<bits/stdc++.h> using namespace std; int ans; string small="99999999"; ...

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

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

  4. 1028 人口普查 (20 分)C++ 示例代码

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

  5. C++学习之路 | PTA乙级—— 1028 人口普查 (20 分)(精简)

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

  6. 1028 人口普查 (20 分)测试点3格式错误

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

  7. PAT (Basic Level) Practice1028 人口普查

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

  8. PAT 1028 人口普查 (20 分)

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

  9. 1028 人口普查 (20 分)(c语言)

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

最新文章

  1. mass Framework event模块 v4
  2. 大约 Apple Metal API 一些想法
  3. 日本CG大神又整活了!3D建模软件拿来搞面部实时捕捉,网友:效果好得有点吓人...
  4. Nginx 和 PHP的安装配置
  5. 织梦dede企业律师事务所网模板源码
  6. Visual Studio Code 1.44 发布
  7. 斗鱼第三方开放平台2.2版使用记录
  8. dpkg 被中断,您必须手工运行 sudo dpkg -configure -a 解决
  9. 印刷点阵字体_印刷术—类型族,分类和组合字体
  10. CIF/4CIF/QCIF/D1
  11. 2台计算机网线连接无法ping通,两台电脑PING不通怎么办?
  12. 离散数学_量词分配等值式
  13. Maven配置文件示例
  14. matlab计算复活节概率,复活节是几月几日_计算复活节日期_我爱历史网
  15. MTK6737 WCN省晶体问题
  16. 在Dreamweaver 中应用模板
  17. MogaFX—日元兑美元30多年来首次突破150日元
  18. there is no statement named xxx in this SqlMap
  19. Searchcode: 源代码搜索利器
  20. Qt实现中国象棋:(七)悔棋

热门文章

  1. 数据库系统DBS的特点
  2. ui设计的文字怎样提高设计感呢?
  3. 使用RabbitMQ做数据接收和处理时,自动关闭
  4. [Java实现] 图片择优(选择最清楚的图片)
  5. 玉山银行的一名新员工“玉山小i随身金融顾问”
  6. iOS开发几年了,你清楚OC中的这些东西么!!!?
  7. 第二阶段团队项目冲刺站立会议(九)
  8. Android5.1.1源码 - zygote fork出的子进程如何权限降级
  9. Vmware虚拟机的复制后无法使用的问题和解决
  10. Python库glob学习笔记