PAT (Basic Level) Practice 1028 人口普查 (20分)

该版本测试点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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Super__Bb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值