#include <bits/stdc++.h>
using namespace std;
/*题目本身不难,但做的时候出现各种小问题,改了很久才改好,需要注意一下。*/
struct stu{
string name;
string sheng;
};
int main()
{
int N;
cin >> N;
vector<stu> v(N);
for(int i=0;i<N;i++){
cin >> v[i].name >> v[i].sheng;
// 假设日期格式为"YYYY-MM-DD",去掉分隔符后合并日期
v[i].sheng = v[i].sheng.substr(0,4)+v[i].sheng.substr(5,2)+v[i].sheng.substr(8,2);
}
int count = 0,isprime = 0; //isprime作为一个启动器,只有找到第一个符合要求的活人才会开始工作
string maxDate; //这里的四个得先声明,我原本是放在下面的if(isprime==0)中同时声明并赋值的,结果报错了
string minDate;
string oldestName;
string youngestName;
for(int i = 0; i < N; i++){
if(v[i].sheng.compare("20140906") <= 0 && v[i].sheng.compare("18140906") >= 0){ //这里字符串不能直接直接使用<=和>=操作符,因为这些操作符进行的是字典序的比较而不是字符串的实际数值大小比较。和python中一样,比如“20”>“100”。
count++;
if(isprime==0){
maxDate = v[i].sheng;
minDate = v[i].sheng;
oldestName = v[i].name;
youngestName = v[i].name;
isprime=1;
}
if(v[i].sheng > maxDate && isprime==1){
maxDate = v[i].sheng;
youngestName = v[i].name;
}
if(v[i].sheng < minDate && isprime==1){
minDate = v[i].sheng;
oldestName = v[i].name;
}
}
}
if(count>0){
cout << count << " " << oldestName << " " << youngestName<<endl;
}else{
cout<<count<<endl;
}
return 0;
}
PAT basic level 1028人口普查
于 2024-02-19 14:30:03 首次发布