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

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

输入格式:

输入在第一行给出正整数N,取值在(0, 105];随后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

有一个测试点 格式错误 不知为什么
# include<iostream>
# include<algorithm>
# include<stdio.h>
# include<string>
using namespace std;
int main()
{
int N,i,n,y,r,maxn=,minn=,maxy=,miny=,maxr=,minr=,count=;
cin>>N;
string s,max,min;
for(i=;i<N;i++)
{
cin>>s;
scanf("%d/%d/%d",&n,&y,&r);
if( (n> && n<) || (n== && y>) || (n== && y== && r>=) || (n== && y<) || (n==&&y==&&r<=) ) //合理性判断 分开判断
{
if(maxn <= n) //为了找出最大的年月日
{
if(maxn < n) // 三个都要替换!!!
{
maxn = n;
maxy = y;
maxr = r;
max = s;
}
else
{
if(maxy <= y) //如果年相同 则比较月份
{
if(maxy < y)
{
maxy = y;//两个都要替换!!
maxr = r;
max = s;
}
else
{
if(maxr < r)
{
maxr = r;
max = s;
} }
}
}
} if(minn >= n)
{
if(minn > n)
{
minn = n;
miny = y;
minr = r;
min = s;
}
else
{
if(miny >= y)
{
if(miny > y)
{
miny = y;
minr = r;
min = s;
}
else
{
if(minr > r)
{
minr = r;
min = s;
} }
}
}
}
count++;
} }
cout<<count<<" "<<min<<" "<<max;
return ;
}

最新文章

  1. Linux系统性能分析
  2. uwp项目总结
  3. JavaScipt 源码解析 回调函数
  4. Mac OS X Yosemite安装盘U盘制作
  5. 小白学数据分析-----&gt;移动游戏的使用时长分析
  6. pthread 学习系列 case2-- 使用互斥锁
  7. C# serialport
  8. CANopen笔记1
  9. FaceBook Twitter实习生简历求内推
  10. poj1458
  11. 关于fedora下jdk的安装
  12. C#操作JSON学习
  13. WPF MVVM 中怎样在ViewModel总打开的对话框在窗体之前
  14. 李洪强iOS开发之-环信05_EaseUI 使用指南
  15. web 前端 shopnc项目 首页分类一开始做前端,我是拒绝的
  16. Problem G: Keywords Search
  17. java中IO写文件工具类
  18. ES 6 : 字符串的扩展
  19. 修改MyEclipse行数的颜色
  20. Unity3D学习(六):《Unity Shader入门精要》——Unity的基础光照

热门文章

  1. DBMS事务的四大特性
  2. POJ 3734 Blocks (线性递推)
  3. 简析平衡树(二)——Treap
  4. 在PHP中读取二进制文件
  5. 高级vim 配置
  6. python_29_三级菜单2
  7. [vijos1066]弱弱的战壕
  8. docker部署Ceph分布式存储集群
  9. 三、Linux 系统目录结构
  10. 关于poi的坑