阅读背景:

PAT B1028 人口普查(20)

来源:互联网 

课本AC代码

#include <cstdio>

struct person {
    char name[10];
    int yy, mm, dd;
} oldest, youngest, left, right, temp;

bool LessEqu(person a, person b) {
    if(a.yy != b.yy) return a.yy <= b.yy;
    else if(a.mm != b.mm) return a.mm <= b.mm;
    else return a.dd <= b.dd;
}

bool MoreEqu(person a, person b) {
    if(a.yy != b.yy) return a.yy >= b.yy;
    else if(a.mm != b.mm) return a.mm >= b.mm;
    else return a.dd >= b.dd;
}

void init() {
    youngest.yy = left.yy = 1814;
    oldest.yy = right.yy = 2014;
    youngest.mm = oldest.mm = left.mm = right.mm = 9;
    youngest.dd = oldest.dd = left.dd = right.dd = 6;
}

int main() {
    init();
    #ifdef ONLINE_JUDGE
    #else
        freopen("1.txt", "r", stdin);
    #endif // ONLINE_JUDGE
    int n, num = 0;
    scanf("%d", &n);
    for(int i = 0; i < n; i++) {
        scanf("%s %d/%d/%d", temp.name, &temp.yy, &temp.mm, &temp.dd);
        int n = 0, m = 0;
        if(MoreEqu(temp, left) && LessEqu(temp, right)) {
            num++;
            if(LessEqu(temp, oldest)) oldest = temp;
            if(MoreEqu(temp, youngest)) youngest = temp;
        }
    }
    if(num == 0) printf("0\n");
    else printf("%d %s %s\n", num, oldest.name, youngest.name);
    return 0;
}
#include <cstdio>

struct person {
   



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: