PAT乙级1028 人口普查 (20 分)
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT乙级1028 人口普查 (20 分)相关的知识,希望对你有一定的参考价值。
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
struct student
{
int a,b,c;
string name;
}stu;
bool cmp(student a,student b)
{
if(a.a==b.a)
{
if(a.b==b.b)
return a.c>b.c;
return a.b>b.b;
}
return a.a>b.a;
}
int main(void)
{
int n; cin>>n;
vector<student> ve;
for(int i=0;i<n;i++)
{
string name,s; cin>>name>>s;
stu.name=name;
int a,b,c;
a=stoi(s.substr(0,4));
b=stoi(s.substr(5,2));
c=stoi(s.substr(8,2));
stu.a=a,stu.b=b,stu.c=c;
if(a>2014) continue;//没出生的
if(a==2014&&b>9) continue;
if(a==2014&&b==9&&c>6) continue;
if(a<1814) continue;//太年长的
if(a==1814&&b<9) continue;
if(a==1814&&b==9&&c<6) continue;
ve.push_back(stu);
}
sort(ve.begin(),ve.end(),cmp);
cout<<ve.size();
if(ve.size()) cout<<" "<<ve[ve.size()-1].name<<" "<<ve[0].name<<endl;
return 0;
}
#include<cstdio>
#include<iostream>
using namespace std;
int main(void)
{
int n; cin>>n;
string name,day;
string s1,id1="00000000";
string s2,id2="99999999";
int k=0;
for(int i=0;i<n;i++)
{
cin>>name>>day;
string temp;
for(int j=0;j<day.size();j++)
{
if(day[j]>='0'&&day[j]<='9') temp+=day[j];
}
if(temp>"20140906") continue;
if(temp<"18140906") continue;
if(temp>id1) s1=name,id1=temp;
if(temp<id2) s2=name,id2=temp;
k++;
}
cout<<k;
if(k) cout<<" "<<s2<<" "<<s1<<endl;
return 0;
}
以上是关于PAT乙级1028 人口普查 (20 分)的主要内容,如果未能解决你的问题,请参考以下文章