#NC2509H. 连胜精英

连胜精英

题目描述

在语言学习平台多邻国的系统中,连胜表示用户连续完成至少一节课的天数计数。多邻国用这种方法压力你保持学习习惯。

虽然高级会员可以使用连胜激冻功能在缺勤时维持连胜,但免费用户会受限,本题中我们假设该功能不可用。尽管如此,你仍有一种能保持连胜的秘诀:系统会根据设备设置的本地时区计算连胜天数。

这意味着你可以在提交课程前调整设备时区,系统会按照修改后的时区计算。利用这个特性,理论上你可以在"明天"完成一节课,然后回到"今天"再提交一节课!由于时区范围从 UTC-12 到 UTC+14 (Timezone),UTC+8 的用户最多可以将时钟回调 20 小时或调快 6 小时。为简化问题,我们假设可以调整到任意时区(包括非整数时区),而不需要考虑现实中实际存在的时区列表。其他可能影响计算的因素(如夏令时)也忽略不计。

给定用户的所有提交记录(格式为 YYYY-MM-DD HH:mm:SS,UTC+8 时区),请通过最优选择每次提交前的时区设置,计算可能达到的最大和最小最长连胜天数。最长连胜天数定义为:在给定时区调整方案下,最长的在时间 00:00:0023:59:59 至少有一次提交记录的连续天数。

在这个问题中,我们使用常见的闰年规则。一个年份被称为闰年当且仅当:

  • 该年份能被 44 整除,并且;
  • 该年份不能被 100100 整除,除非它也能被 400400 整除。

否则,该年份称为平年。例如,20002000 是一个闰年,但 19001900 是一个平年。每个月的天数如下表所示。

月份 01 02 03 04 05 06 07 08 09 10 11 12
天数(平年) 31 28 31 30 31 30 31 30 31 30 31
天数(闰年) 29

输入格式

第一行包含整数 nn1n1051 ≤ n ≤ 10^5)表示提交记录数。

接下来 nn 行每行包含一个 UTC+8 时区的时间戳,格式为 YYYY-MM-DD HH:mm:SS,保证按时间顺序给出。

保证所有日期都在 2000-01-012999-12-31 之间。

输出格式

输出两个空格分隔的整数:可能的最大最长连胜天数和最小最长连胜天数。

3
2020-02-29 09:10:23
2020-02-29 11:45:14
2020-02-29 12:34:58
2 1
3
2025-08-12 18:00:00
2025-08-12 18:00:01
2025-08-12 18:00:02
3 1

解释 #2

  • 不做任何修改,那么最长连胜是 11 天(2025 年 8 月 12 日);
  • 将第一个提交记录调慢 20 小时(UTC+12),第二个提交记录调快 6 小时(UTC+14),那么最长连胜是 33 天(2025 年 8 月 11 日到 2025 年 8 月 13 日)。