만드는 중입니다

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

시민권

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

요약
해외에 머문 기간이 주어질 때, 최근 y번의 365일 구간마다 국내 체류일이 d일 이상인 가장 이른 신청 날짜를 구합니다.
난이도

보통10점 중 5점

유형
누적 합, 시뮬레이션
정답자
아직 제출이 없습니다

문제

오랫동안 다른 나라로 이사한 당신은 이제 시민권을 신청하기로 했다. 새 나라는 모든 신청자에게 엄격한 거주 요건을 둔다. 신청하려면 과거 yy년 연속으로, 해마다 최소 dd일 동안 그 나라에 실제로 체류해야 한다. 이 연도들은 신청일부터 거꾸로 센 12개월 기간으로 계산한다.

이 문제에서는 달력의 한 해가 12개월, 365일이고, 각 달의 날수는 아래 표와 같다고 가정한다.

월010203040506070809101112
일수312831303130313130313031

예를 들어 2024-09-19에 신청한다면, 2023-09-19부터 2024-09-18까지, 2022-09-19부터 2023-09-18까지, 이런 식으로 yy개의 기간 각각에서 최소 dd일을 그 나라에 있어야 한다.

당신은 이미 yy년 이상 그 나라에서 살았지만 여행을 많이 다녀서, 거주 요건을 충족하는지 확신하지 못한다. 여행 기록이 주어졌을 때 시민권 신청서를 제출할 수 있는 가장 이른 날짜를 찾는 프로그램을 작성하라.

입력

첫 줄에 세 정수 nn, yy, dd가 주어진다 (1≤n≤5001 \le n \le 500, 1≤y≤10001 \le y \le 1000, 1≤d≤3651 \le d \le 365). nn은 출국한 횟수이고, yy와 dd는 위에서 설명한 거주 요건이다.

이어서 nn개의 줄이 주어지며, 각 줄에는 YYYY-MM-DD 형식의 날짜 두 개가 주어진다. 연도 YYYY는 0000 이상 5000 이하, 월 MM은 01 이상 12 이하, 일 DD는 01 이상 31 이하이다. 각 줄의 두 날짜 사이 기간은 양 끝을 포함해서 출국해 있던 기간이다. 입력의 모든 날짜는 오름차순으로 정렬되어 있다. 같은 날짜가 나올 수 있는 경우는 같은 줄 안의 두 날짜뿐이다. 주어진 날짜는 모두 유효한 날짜이다.

출력

신청할 수 있는 가장 이른 날짜를 YYYY-MM-DD 형식으로 출력한다. 이 날짜는 입력의 마지막 날짜보다 뒤여야 한다.

예제2

  1. 예제 1

    입력
    3 5 240
    2022-02-28 2022-10-01
    2022-11-11 2022-11-11
    2023-12-30 2024-01-01
    
    예상 출력
    2024-05-31
    
  2. 예제 2

    입력
    3 5 240
    2011-11-11 2012-12-12
    2022-02-28 2022-10-01
    2025-01-01 2025-06-30
    
    예상 출력
    2028-02-26