1028. 인구센서스(20)

1028. 인구센서스(20)
시간 제한
200 ms
메모리 제한
65536 kB
코드 길이 제한
8000 B
판정 절차
Standard
작자
CHEN, Yue
모 도시에서 인구 조사를 하여 전체 주민의 생일을 맞았다.지금 당신이 프로그램을 써서 마을에서 가장 나이가 많고 가장 젊은 사람을 찾아내세요.
여기에 모든 입력 날짜가 합법적인 것을 확보하지만 반드시 합리적인 것은 아니다. 마을에 200세를 넘지 않은 노인이 없고 오늘이 2014년 9월 6일이라고 가정하면 200세를 넘은 생일과 미출생 생일은 모두 불합리하고 여과되어야 한다.
입력 형식:
첫 번째 줄에 정수 N을 입력하고 값을 (0,105]로 받습니다. 그 다음에 N 줄은 한 사람의 이름(영문 자모 5개를 초과하지 않는 문자열)과'yyyy/mm/dd'(즉 연/월/일) 형식으로 생일을 줍니다.제목은 가장 나이가 많은 사람과 가장 젊은 사람이 병렬되지 않도록 보증한다.
출력 형식:
한 줄에 유효한 생일 개수, 최고령, 최연소 이름을 순서대로 출력하고, 그 사이를 빈칸으로 구분합니다.
샘플 입력:
5
John 2001/05/12
Tom 1814/09/06
Ann 2121/01/30
James 1814/09/05
Steve 1967/11/20

출력 예제:
3 Tom John


4
#include <stdio.h>
#include <string.h>
typedef struct Birthday{
	char name[6];
	char day[11];
}Birthday;
Birthday data[100000];
int main() {
	freopen("in", "r", stdin);
	int n;
	scanf("%d
", &n); for (int i = 0; i < n; ++i) scanf("%s%s", data[i].name, data[i].day); int cnt = 0; // int earlest = -1, latest = -1; // for (int i = 0; i < n; ++i) if(strcmp(data[i].day, "1814/09/06") >= 0 && strcmp(data[i].day, "2014/09/06") <= 0) { if(earlest < 0) // , earlest = latest = i; ++cnt; if(strcmp(data[i].day, data[earlest].day) <= 0) earlest = i; else if(strcmp(data[i].day, data[latest].day) >= 0) latest = i; } if(cnt) printf("%d %s %s", cnt, data[earlest].name, data[latest].name); else // 0, printf("%d", cnt); return 0; }
요약:
1.        ,       ,        ;
2.       (earlest)    (latest)            ,             ,earlest latest     0。              ,  bug          !                earlest latest  。   ,        ,                。

좋은 웹페이지 즐겨찾기