#include<cstdio>
struct person{
char name[10];
int yy,mm,dd;
}oldest,youngest,left,right,temp;
bool LessEqu(person a,person b){
if(a.yy!=b.yy)
return a.yy<=b.yy;
else if(a.mm!=b.mm)return a.mm<=b.mm;
else return a.dd<=b.dd;
}
bool MoreEqu(person a,person b){
if(a.yy!=b.yy)
return a.yy>=b.yy;
else if(a.mm!=b.mm)return a.mm>=b.mm;
else return a.dd>=b.dd;
}
void init(){
youngest.yy=left.yy=1814;
oldest.yy=right.yy=2014;
youngest.mm=oldest.mm=left.mm=right.mm=9;
youngest.dd=oldest.dd=left.dd=right.dd=6;
}
int main(){
init();
int n,num=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%s %d/%d/%d",temp.name,&temp.yy,&temp.mm,&temp.dd);
if(MoreEqu(temp,left)&&LessEqu(temp,right)){
num++;
if(LessEqu(temp, oldest))oldest=temp;
if(MoreEqu(temp,youngest))youngest=temp;
}
if(num==0)printf("0\n");
else printf("%d %s %s\n",num,oldest.name,youngest.name);
return 0;
}
}
B1028.人口普查问题题解
最新推荐文章于 2024-12-18 01:39:59 发布
这段代码定义了一个结构体`person`来存储姓名和日期,并实现了两个比较函数`LessEqu`和`MoreEqu`。初始化了最年轻和最年老人的出生日期,然后读取输入的个人数据,比较并更新最年轻和最年老人的信息。程序最后输出符合条件的人数以及最年轻和最年老人的姓名。
454

被折叠的 条评论
为什么被折叠?



