1028 人口普查最后一个测试点通过不了

 //PAT1028V2
#include <stdio.h>

int main(){
    int n,count=0,i;    //n is the number of input
    scanf("%d",&n);
    struct birth{
        char name[6];
        int year;
        int month;
        int day;
    }a,max,min;
    max.year=2014,max.month=9,max.day=7;
    min.year=1814,min.month=9,min.day=5;

    for(i=0;i<n;i++){
        scanf("%s %d/%d/%d",&a.name,&a.year,&a.month,&a.day);
        count++;
        if((a.year>2014)||(a.year==2014&&a.month>9)||(a.year==2014&&a.month==9&&a.day>6)||(a.year<1814)||(a.year==1814&&a.month<9)||(a.year==1814&&a.month==9&&a.day<6)){
            count--;
            continue;
        }
        if((a.year<max.year)||(a.year==max.year&&a.month<max.month)||(a.year==max.year&&a.month==max.month&&a.day<max.day)){
            max=a;
        }
        if((a.year>min.year)||(a.year==max.year&&a.month>max.month)||(a.year==min.year&&a.month==min.month&&a.day>min.day)){
            min=a;
        }   
    }
    printf("%d",count);
    if(count!=0){
        printf(" %s %s",max.name,min.name);
    }
    return 0;
}

看注释.

 #include <stdio.h>

int main() {
    int n, count = 0, i;    //n is the number of input
    scanf("%d", &n);
    struct birth {
        char name[6];
        int year;
        int month;
        int day;
    }a, max, min;
    max.year = 2014, max.month = 10, max.day = 7;
    min.year = 1814, min.month = 8, min.day = 1;

    for (i = 0; i<n; i++) {
        scanf("%s %d/%d/%d", &a.name, &a.year, &a.month, &a.day);
        count++;
        if ((a.year>2014) || (a.year == 2014 && a.month>9) || (a.year == 2014 && a.month == 9 && a.day>6) || (a.year<1814) || (a.year == 1814 && a.month<9) || (a.year == 1814 && a.month == 9 && a.day<6)) {
            count--;
            continue;
        }
        if ((a.year<max.year) || (a.year == max.year&&a.month<max.month) || (a.year == max.year&&a.month == max.month&&a.day<max.day)) {
            max = a;
        }
        //下方第二个逻辑判断把min错写成了max,写的时候没注意看吧
        if ((a.year>min.year) || (a.year == min.year&&a.month>min.month) || (a.year == min.year&&a.month == min.month&&a.day>min.day)) {
            min = a;
        }
    }
    printf("%d", count);
    if (count != 0) {
        printf(" %s %s", max.name, min.name);
    }
    return 0;
}

最后一个检查点应该是性能方面的,你是不是超时了。
https://www.jianshu.com/p/ad93bbcb6150