만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

유통기한

면접 대비

시간 제한1초메모리 제한1024 MB

요약
각 식품의 날짜를 유효한 모든 년월일 형식으로 읽어 봅니다. 유효한 해석이 없으면 invalid, 모든 해석에서 오늘이 유통기한 이전이거나 같으면 safe, 그렇지 않으면 unsafe를 출력합니다.
난이도

쉬움10점 중 3점

유형
구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

자취 11년 차 한별이는 냉장고에 있는 음식들의 유통기한이 지나지 않았는지 걱정이다. 그런데 유통기한에 적힌 날짜의 연도, 월, 일 순서를 알 수 없어서 고민하고 있다.

날짜를 표기하는 방법은 나라마다 다르며, 크게 세 가지가 있다.

  • 연도/월/일: 대한민국, 일본, 중국, 리투아니아, 몽골, 부탄, 헝가리 등 동아시아권 국가
  • 일/월/연도: 그리스, 네덜란드, 덴마크, 독일, 러시아, 베트남, 이집트, 이탈리아 등 대부분의 국가
  • 월/일/연도: 미국, 괌, 필리핀 등 일부 영어권 국가

예를 들어 10/12/32라는 날짜는

  • 일/월/연도로 읽으면 20322032년 1212월 1010일
  • 월/일/연도로 읽으면 20322032년 1010월 1212일

중 하나가 된다. 1212월 3232일은 존재하지 않으므로 연도/월/일 형식(20102010년 1212월 3232일)은 아니라는 것을 알 수 있다.

한별이는 유효한 날짜로 읽을 수 있는 모든 형식에서 음식이 안전한지 알고 싶다. 한별이를 도와 음식이 안전한지 판단하는 프로그램을 작성하자.

입력

첫 번째 줄에 오늘 날짜를 나타내는 정수 YY, MM, DD가 공백으로 구분되어 주어진다. 오늘은 (2000+Y)(2000+Y)년 MM월 DD일이다. (0≤Y≤990 \le Y \le 99, (2000+Y)(2000+Y)년 MM월 DD일은 올바른 날짜)

다음 줄에는 냉장고 음식의 개수 NN이 주어진다. (1≤N≤300 0001 \le N \le 300\,000)

다음 NN개의 줄에는 음식 하나의 유통기한을 나타내는 정수 AA, BB, CC가 공백으로 구분되어 주어진다. 유통기한은 AA/BB/CC 형식으로 적혀 있다. (0≤A,B,C≤990 \le A, B, C \le 99)

모든 날짜는 2000년에서 2099년 사이이며, 연도는 100100으로 나눈 나머지만 주어진다.

출력

각 날짜마다 한 줄에 하나씩 다음 중 한 가지를 출력한다.

  • invalid: 어떤 형식으로 읽어도 올바르지 않은 날짜인 경우
  • safe: 유효한 날짜로 읽을 수 있는 모든 형식에서 오늘이 유통기한보다 이전이거나 같은 날인 경우
  • unsafe: 나머지 경우

힌트

11월, 33월, 55월, 77월, 88월, 1010월, 1212월은 각각 3131일까지 있다.

44월, 66월, 99월, 1111월은 각각 3030일까지 있다.

22월은 윤년이면 2929일, 윤년이 아니면 2828일까지 있다. 이 문제의 연도는 2000년에서 2099년 사이이므로, 44로 나누어떨어지는 연도는 모두 윤년이다.

예제1

  1. 예제 1

    입력
    22 11 26
    4
    22 11 30
    22 11 31
    22 12 1
    22 22 22
    
    예상 출력
    safe
    safe
    unsafe
    invalid