pat 乙级 1028 人口普查()

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <string.h>
  4 #include <math.h>
  5 
  6 typedef struct people
  7 {
  8     char name[6];
  9     int year;
 10     int month;
 11     int day;
 12 } peo;
 13 
 14 int main()
 15 {
 16     int n;
 17     scanf("%d", &n);
 18     peo p[n];
 19     for (int i = 0; i < n; i++)
 20     {
 21         int j = 0;
 22         scanf("%s", p[i].name);
 23         scanf("%d/%d/%d", &p[i].year, &p[i].month, &p[i].day);
 24     }
 25     int count = 0;
 26     for (int i = 0; i < n; i++)
 27     {
 28         if (p[i].year > 2014 || p[i].year < 1814)
 29         {
 30             p[i].year = -1;
 31             continue;
 32         }
 33         if (p[i].year == 2014)
 34         {
 35             if (p[i].month > 9)
 36             {
 37                 p[i].year = -1;
 38                 continue;
 39             }
 40             else if (p[i].month == 9)
 41             {
 42                 if (p[i].day > 6)
 43                 {
 44                     p[i].year = -1;
 45                     continue;
 46                 }
 47             }
 48         }
 49         if (p[i].year == 1814)
 50         {
 51             if (p[i].month < 9)
 52             {
 53                 p[i].year = -1;
 54                 continue;
 55             }
 56             else if (p[i].month == 9)
 57             {
 58                 if (p[i].day < 6)
 59                 {
 60                     p[i].year = -1;
 61                     continue;
 62                 }
 63             }
 64         }
 65         count++;
 66     }
 67     printf("%d", count);
 68     int max = 0;
 69     int min = 0;
 70     for (int i = 0; i < n; i++)
 71     {
 72         if (p[i].year != -1)
 73         {
 74             max = i;
 75             min = i;
 76             break;
 77         }
 78     }
 79     for (int i = 0; i < n; i++)
 80     {
 81 
 82         if (p[i].year != -1)
 83         {
 84             if (p[max].year > p[i].year)
 85             {
 86 
 87                 max = i;
 88             }
 89             else if (p[max].year == p[i].year)
 90             {
 91                 if (p[max].month > p[i].month)
 92                 {
 93 
 94                     max = i;
 95                 }
 96                 else if (p[max].month == p[i].month)
 97                 {
 98                     if (p[max].day > p[i].day)
 99                     {
100 
101                         max = i;
102                     }
103                 }
104             }
105         }
106     }
107     for (int i = 0; i < n; i++)
108     {
109         if (p[i].year != -1)
110         {
111 
112             if (p[min].year < p[i].year)
113             {
114 
115                 min = i;
116             }
117             else if (p[min].year == p[i].year)
118             {
119                 if (p[min].month < p[i].month)
120                 {
121 
122                     min = i;
123                 }
124                 else if (p[min].month == p[i].month)
125                 {
126                     if (p[min].day < p[i].day)
127                     {
128 
129                         min = i;
130                     }
131                 }
132             }
133         }
134     }
135     if (p[max].year != -1 && p[min].year != -1)
136     {
137         printf(" %s %s", p[max].name, p[min].name);//需要考虑合理值为0的情形,即year均置为1
138     }
139     
140     return 0;
141 }
————————
  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <string.h>
  4 #include <math.h>
  5 
  6 typedef struct people
  7 {
  8     char name[6];
  9     int year;
 10     int month;
 11     int day;
 12 } peo;
 13 
 14 int main()
 15 {
 16     int n;
 17     scanf("%d", &n);
 18     peo p[n];
 19     for (int i = 0; i < n; i++)
 20     {
 21         int j = 0;
 22         scanf("%s", p[i].name);
 23         scanf("%d/%d/%d", &p[i].year, &p[i].month, &p[i].day);
 24     }
 25     int count = 0;
 26     for (int i = 0; i < n; i++)
 27     {
 28         if (p[i].year > 2014 || p[i].year < 1814)
 29         {
 30             p[i].year = -1;
 31             continue;
 32         }
 33         if (p[i].year == 2014)
 34         {
 35             if (p[i].month > 9)
 36             {
 37                 p[i].year = -1;
 38                 continue;
 39             }
 40             else if (p[i].month == 9)
 41             {
 42                 if (p[i].day > 6)
 43                 {
 44                     p[i].year = -1;
 45                     continue;
 46                 }
 47             }
 48         }
 49         if (p[i].year == 1814)
 50         {
 51             if (p[i].month < 9)
 52             {
 53                 p[i].year = -1;
 54                 continue;
 55             }
 56             else if (p[i].month == 9)
 57             {
 58                 if (p[i].day < 6)
 59                 {
 60                     p[i].year = -1;
 61                     continue;
 62                 }
 63             }
 64         }
 65         count++;
 66     }
 67     printf("%d", count);
 68     int max = 0;
 69     int min = 0;
 70     for (int i = 0; i < n; i++)
 71     {
 72         if (p[i].year != -1)
 73         {
 74             max = i;
 75             min = i;
 76             break;
 77         }
 78     }
 79     for (int i = 0; i < n; i++)
 80     {
 81 
 82         if (p[i].year != -1)
 83         {
 84             if (p[max].year > p[i].year)
 85             {
 86 
 87                 max = i;
 88             }
 89             else if (p[max].year == p[i].year)
 90             {
 91                 if (p[max].month > p[i].month)
 92                 {
 93 
 94                     max = i;
 95                 }
 96                 else if (p[max].month == p[i].month)
 97                 {
 98                     if (p[max].day > p[i].day)
 99                     {
100 
101                         max = i;
102                     }
103                 }
104             }
105         }
106     }
107     for (int i = 0; i < n; i++)
108     {
109         if (p[i].year != -1)
110         {
111 
112             if (p[min].year < p[i].year)
113             {
114 
115                 min = i;
116             }
117             else if (p[min].year == p[i].year)
118             {
119                 if (p[min].month < p[i].month)
120                 {
121 
122                     min = i;
123                 }
124                 else if (p[min].month == p[i].month)
125                 {
126                     if (p[min].day < p[i].day)
127                     {
128 
129                         min = i;
130                     }
131                 }
132             }
133         }
134     }
135     if (p[max].year != -1 && p[min].year != -1)
136     {
137         printf(" %s %s", p[max].name, p[min].name);//需要考虑合理值为0的情形,即year均置为1
138     }
139     
140     return 0;
141 }