这道题我只做出18分
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
class person{
public:
string name;
string birthday;
int age;
};
bool cmp(person a,person b){
return a.age>b.age;
}
int main(){
person a;
vector<person> total;
int N,count=0;
cin>>N;
for(int i=0;i<N;++i){
cin>>a.name;
cin>>a.birthday;
int sum=0;
int mon[]={31,28,31,30,31,30,31,31,30,31,30,31};
int mon2[]={31,29,31,30,31,30,31,31,30,31,30,31};
for(int i=0;i<4;++i){
sum=sum*10+a.birthday[i]-'0';
a.age=2014-sum;
}
if(sum%400==0||(sum%4==0&&sum%100!=0)){
sum=0;//不知道生日格式需要检查吗 看来是需要的
sum=(a.birthday[5]-'0')*10+(a.birthday[6]-'0');
if(sum>12) continue;
if((a.birthday[8]-'0')*10+a.birthday[9]-'0'>mon2[sum-1]) continue;
}
else{
sum=0;//不知道生日格式需要检查吗 看来是需要的
sum=(a.birthday[5]-'0')*10+(a.birthday[6]-'0');
if(sum>12) continue;
if((a.birthday[8]-'0')*10+a.birthday[9]-'0'>mon[sum-1]) continue;
}
sum=sum*100+(a.birthday[8]-'0')*10+a.birthday[9]-'0';
//cout<<sum<<endl;
if(sum<906) ++a.age;
if(a.age>0&&a.age<=200){
++count;
total.push_back(a);
}
}
sort(total.begin(),total.end(),cmp);
// for(int i=0;i<count;++i){
// cout<<total[i].name<<' '<<total[i].age<<endl;
// }
cout<<count<<' '<<total[0].name<<' '<<total[count-1].name;
}