#include<bits/stdc++.h>
using namespace std;
struct Person
{
char name[100];
int year;
int month;
int day;
bool operator <(const Person& d)//重载运算符<(注意:这里的小于号是出生日期的小于不是年龄的小于)
{
if(year<d.year)
return true;
if(year==d.year&&month<d.month)
return true;
if(year==d.year&&month==d.month&&day<d.day)
return true;
return false;
}
Person(char *name0,int year0,int month0,int day0):year(year0),month(month0),day(day0)
{
strcpy(name,name0);
}
Person(){}
bool isFit()//判断是否出生日期是否合理
{
if(Person("",2014,9,6)<*this)//c++的结构体也很有this指针(还未出生?)
{
return false;
}
if(2014-year>200)//(年龄大于200岁)
return false;
if(2014-year==200&&(month<9||(month==9&&day<6)))
{
return false;
}
return true;
}
};
int main(void)
{
int n;
scanf("%d",&n);
char name[100];
int year,month,day;
Person maxPerson=Person("",2015,9,6),minPerson=Person("",1813,9,6);
int ans=0;
while(n--)
{
scanf("%s%d/%d/%d",name,&year,&month,&day);
if(Person(name,year,month,day).isFit())
{
ans++;
if(Person(name,year,month,day)<maxPerson)
{
maxPerson=Person(name,year,month,day);
}
if(minPerson<Person(name,year,month,day))
{
minPerson=Person(name,year,month,day);
}
}
}
if(ans!=0)//特判,没有一个合理的出生日期只输出一个0
printf("%d %s %s\n",ans,maxPerson.name,minPerson.name);
else
printf("0\n");
return 0;
}
1028 人口普查
最新推荐文章于 2023-04-07 17:34:51 发布