码迷,mamicode.com
首页 > 其他好文 > 详细

PAT|1028 人口普查(简单模拟)

时间:2020-01-16 12:35:38      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:class   string   sort   end   数组   模拟   code   lse   std   

注意点:1.最年长人的出生日期是1814/9/6 

               2.最年轻人的出生日期是2014/9/6 

               3.存在输入样例均不在合理日期内 应只输出0

思路:将符合条件的加入进结构体数组中,并对他们进行排序,输出最大最小即可。

#include <algorithm>
#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
#include <vector>
using namespace std;
const int maxn = 0x3f3f3f3f;
typedef long long ll;
struct Node{
    string a;
    int b,c,d;
}w[100005];
bool cmp(Node p,Node q) {
    if(p.b != q.b) return p.b < q.b;
    if(p.c != q.c) return p.c < q.c;
    if(p.d != q.d)  return p.d < q.d;
    return p.a < q.a;
}
int main() {
    int n;
    cin >> n;
    string a;
    int b,c,d;
    int t = 0;
    for(int i = 1; i <= n; i++) {
        cin >> a;
        scanf("%d/%d/%d",&b,&c,&d);

        if((b == 2014 && c == 9 && d >6) || (b == 1814 && c == 9 && d < 6) || (b == 2014 && c > 9 ) ||(b > 2014) ||(b == 1814 && c < 9)||(b < 1814)) {
                continue;
        }
        else {
            w[t].a = a;
            w[t].b = b;
            w[t].c = c;
            w[t++].d = d;
        }
        //
    }
    sort(w,w+t,cmp);
    cout << t;
    if(t != 0)
    cout << " " << w[0].a << " " << w[t-1].a<<endl;
    return 0;
}

PAT|1028 人口普查(简单模拟)

标签:class   string   sort   end   数组   模拟   code   lse   std   

原文地址:https://www.cnblogs.com/LLLAIH/p/12200373.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!