P15466 [ICPC 2024 WF] Citizenship 公民身份
题目背景
4s 2048MB
翻译来源:loj #6973. [「ICPC World Finals 2024」公民身份](https://loj.ac/p/6973)。
题目描述
自从你搬到另一个国家已经过去了很长一段时间,现在你决定是时候申请成为该国的公民了。这个新国家对所有申请者有严格的居住要求。要提交申请,你必须在过去连续 $y$ 年中,每年至少在该国停留 $d$ 天。这些年份是按申请日期向前推算的 $12$ 个月周期来计算的。
在本题中,假设一个日历年有 $12$ 个月,共 $365$ 天,每个月的具体天数如下表所示:
| 月份 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
| 天数 | 31 | 28 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 |
例如,如果你计划在 2024-09-19 申请公民身份,你必须在 2023-09-19 到 2024-09-18、2022-09-19 到 2023-09-18 等连续 $y$ 个 $12$ 个月周期内,每周期至少在该国停留 $d$ 天。
你已经在该国居住了至少 $y$ 年,但由于经常旅行,你不确定自己是否符合居住要求。请编写一个程序,根据你的旅行记录,找出你最早可以提交公民身份申请的日期。
输入格式
第一行包含三个整数 $n$、$y$ 和 $d$ $(1 \leq n \leq 500, 1 \leq y \leq 1\,000, 1 \leq d \leq 365)$。其中,$n$ 表示你离开该国的次数,$y$ 和 $d$ 分别表示该国居住要求的年数和每年所需的最少停留天数,如上所述。
接下来的 $n$ 行,每行包含两个日期,格式为 $\texttt{YYYY-MM-DD}$ $(0000 \leq \texttt{YYYY} \leq 5000, 01 \leq \texttt{MM} \leq 12, 01 \leq \texttt{DD} \leq 31)$。这两个日期之间(包括首尾日期)你在国外。输入中的所有日期按升序排列,唯一可能相等的日期是同一行的两个日期。所有给定的日期都是有效的。
输出格式
输出你满足居住要求的最早日期。该日期必须晚于输入中的最后一个日期。