该版本测试点4容易超时,建议对于10^5以上的数据,将cin换成scanf
如果是多输出,则将cout 换成 printf
pat的好多题,如果是0,也需要输出0
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
struct peo
{
string Name;
string Birth;
};
bool cmp(struct peo p1,struct peo p2)
{
if(p1.Birth<p2.Birth)
return true;
else
return false;
}
int main(int argc, char const *argv[])
{
int N;
struct peo people;
vector <struct peo> v;
cin >> N;
while(N--)
{
people.Birth.resize(10);
cin >> people.Name;
scanf("%s",people.Birth.c_str());
if(people.Birth>="1814/09/06"&&people.Birth<="2014/09/06")
v.push_back(people);
}
sort(v.begin(),v.end(),cmp);
if(v.size()==0)
cout << 0 << endl;
else
cout << v.size() << " " << v[0].Name << " " << v[v.size()-1].Name << endl;
return 0;
}
不用容器
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
int N,cnt=0;
string Name,Birth,Max_Name,Min_Name,Min_Birth="1814/09/06",Max_Birth="2014/09/06";
cin >> N;
while(N--)
{
Birth.resize(10);
cin >> Name;
scanf("%s",Birth.c_str());
if(Birth>="1814/09/06"&&Birth<="2014/09/06")
{
cnt++;
if(Birth<=Max_Birth)
{
Max_Name=Name;
Max_Birth=Birth;
}
if(Birth>=Min_Birth)
{
Min_Name=Name;
Min_Birth=Birth;
}
}
}
if(cnt==0)
cout << 0 << endl;
else
cout << cnt<< " " << Max_Name << " " << Min_Name << endl;
return 0;
}