luogu#P7267. [BalticOI 2000] Time Zones (Day1)

[BalticOI 2000] Time Zones (Day1)

题目描述

你是一名拥有全球客户的商人。在某一天的 nn 个小时里,你恰好收到了来自全球所有 nn 个时区的消息(包括你所在的第 00 时区),每个时区各发来了一条消息。每条消息都附带了发送者的本地发送时间(假设消息是瞬间送达的)。

不幸的是,由于千年虫漏洞,消息中只显示了本地的“小时”和“分钟”,并没有包含任何能识别发送者所在时区的信息。

你的任务是:根据这些消息,推断出每条消息分别来自哪一个时区。

时区与时间转换规则

  1. 基本设定: 这个世界的一天一共有 nn 个小时(编号为 0n10 \sim n-1)。全球也正好划分为 nn 个时区(编号为 0n10 \sim n-1)。
  2. 你的基准位置: 你生活并在00 时区接收消息(类似于“格林威治标准时间 GMT”),第 00 时区没有时间偏移。
  3. 特殊的时区转换: 本题的时区是向西计算的。这意味着,如果一条消息来自第 zz 时区,其本地时间的小时数为 hhhh,那么当它到达你的第 00 时区时,你的时间(小时数)为:第 0 时区小时数=hh+z\text{第 0 时区小时数} = hh + z

    📌 注意: 这与我们日常的时区计算习惯相反。例如,如果第 22 时区的本地时间是 03:15,那么它到达你的第 00 时区时,时间就是 05:15

  4. 边界与时间单调性:
    • 消息可以在一天的任何时间到达,即第 00 时区的时间范围在 0:00(n-1):59 之间。
    • 日界线位于第 00 时区和最后一个时区之间,因此可以忽略(这意味着换算后的第 00 时区小时数 hh+zhh + z 必须严格控制在 [0,n1][0, n-1] 之间,不能越界,也不存在跨天循环)。
    • 没有两条消息是在同一时间到达的(换算成第 00 时区的时间后,各不相同)。

输入格式

第一行包含一个整数 nn5n605 \le n \le 60),代表一天的总小时数、总时区数以及你收到的消息数量。

接下来的 nn 行,每行包含一个 44 位数字的字符串 hhmm(前两位为小时 hhhh,后两位为分钟 mmmm),代表一条消息的本地发送时间。其中 0hhn10 \le hh \le n-10mm590 \le mm \le 59

⚠️ 最核心条件:输入的这 nn 行数据是严格按照时间先后顺序(Chronological Order)排列的。 也就是说,最早到达第 00 时区的消息在第一行,最晚到达的在最后一行。换算成第 00 时区的时间后,必须满足严格单调递增

输出格式

输出一行 nn 个由空格隔开的整数(范围 0n10 \sim n-1),代表输入中每条消息对应的时区编号。第一个数字对应输入的第一条消息,以此类推。

5
0017
0250
0400
0201
0002
3 1 0 2 4

提示

提示说明

样例解释

对于样例 11,共包含 n=5n = 5 条消息,一天的合法小时范围为 040 \sim 4。按照输出给出的时区序列 3,1,0,2,43, 1, 0, 2, 4 进行换算,各消息到达第 00 时区的时间如下:

  • 11 条消息: 本地时间 00:1700:17,来自第 33 时区。换算后为 00+3=0300 + 3 = 03 点,即 03:1703:17
  • 22 条消息: 本地时间 02:5002:50,来自第 11 时区。换算后为 02+1=0302 + 1 = 03 点,即 03:5003:50
  • 33 条消息: 本地时间 04:0004:00,来自第 00 时区。换算后为 04+0=0404 + 0 = 04 点,即 04:0004:00
  • 44 条消息: 本地时间 02:0102:01,来自第 22 时区。换算后为 02+2=0402 + 2 = 04 点,即 04:0104:01
  • 55 条消息: 本地时间 00:0200:02,来自第 44 时区。换算后为 00+4=0400 + 4 = 04 点,即 04:0204:02

检查结果:

  1. 换算后的第 00 时区时间序列为:03:17<03:50<04:00<04:01<04:0203:17 < 03:50 < 04:00 < 04:01 < 04:02,严格满足单调递增的收到顺序。
  2. 分配的时区编号 3,1,0,2,43, 1, 0, 2, 4 恰好不重不漏地使用了 040 \sim 4 的所有时区。
  3. 类似第 33 条消息 04:0004:00,它必须来自第 00 时区。若来自其他大于 00 的时区(如第 11 时区),换算后的小时数将达到 0505,超出 [0,4][0, 4] 的合法范围。

数据规模与约定

  • 对于 100%100\% 的数据,满足 5n605 \le n \le 60
  • 对于每条消息的本地时间,满足 0hhn10 \le hh \le n-10mm590 \le mm \le 59
  • 官方所有测试数据均保证有且仅有唯一解

题目说明