题目分析
- 还是排序问题。依然
执着
地使用string
类型来比较大小!噢耶! - 输入的同时判断日期是否合理,同时比较大小,和数字没啥两样,只是以字符串来实现。详细见代码实现。
注意
:如果有0
个即没有日期合法,那么输出格式会不一样,需要另外输出。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
int cnt = 0;
string max_name, min_name, max_birth = "00000000", min_birth = "20140906";
for(int i = 0; i < n; i++)
{
string name, birth, year, month, date, temp;
cin >> name >> birth;
year.assign(birth, 0, 4);
month.assign(birth, 5, 2);
date.assign(birth, 8, 2);
temp = year+month+date;
if(temp > "20140906" || temp < "18140906")
continue;
cnt++;
if(temp > max_birth)
{
max_birth = temp;
max_name = name;
}
if(temp < min_birth)
{
min_birth = temp;
min_name = name;
}
}
if(cnt == 0)
{
cout << 0;
return 0;
}
cout << cnt << " ";
cout << min_name << " " << max_name;
return 0;
}