P7267 [BalticOI 2000] Time Zones (Day1)
题目描述
你是一名拥有全球客户的商人。在某一天的 $n$ 个小时里,你恰好收到了来自全球所有 $n$ 个时区的消息(包括你所在的第 $0$ 时区),每个时区各发来了一条消息。每条消息都附带了发送者的**本地发送时间**(假设消息是瞬间送达的)。
不幸的是,由于千年虫漏洞,消息中只显示了本地的“小时”和“分钟”,并没有包含任何能识别发送者所在时区的信息。
你的任务是:根据这些消息,推断出每条消息分别来自哪一个时区。
### 时区与时间转换规则
1. **基本设定:** 这个世界的一天一共有 $n$ 个小时(编号为 $0 \sim n-1$)。全球也正好划分为 $n$ 个时区(编号为 $0 \sim n-1$)。
2. **你的基准位置:** 你生活并在**第 $0$ 时区**接收消息(类似于“格林威治标准时间 GMT”),第 $0$ 时区没有时间偏移。
3. **特殊的时区转换:** 本题的时区是向西计算的。这意味着,如果一条消息来自第 $z$ 时区,其本地时间的小时数为 $hh$,那么当它到达你的第 $0$ 时区时,你的时间(小时数)为:
$$\text{第 0 时区小时数} = hh + z$$
> 📌 **注意:** 这与我们日常的时区计算习惯相反。例如,如果第 $2$ 时区的本地时间是 `03:15`,那么它到达你的第 $0$ 时区时,时间就是 `05:15`。
4. **边界与时间单调性:**
* 消息可以在一天的任何时间到达,即第 $0$ 时区的时间范围在 `0:00` 到 `(n-1):59` 之间。
* **日界线位于第 $0$ 时区和最后一个时区之间,因此可以忽略**(这意味着换算后的第 $0$ 时区小时数 $hh + z$ 必须严格控制在 $[0, n-1]$ 之间,不能越界,也不存在跨天循环)。
* **没有两条消息是在同一时间到达的**(换算成第 $0$ 时区的时间后,各不相同)。
输入格式
第一行包含一个整数 $n$($5 \le n \le 60$),代表一天的总小时数、总时区数以及你收到的消息数量。
接下来的 $n$ 行,每行包含一个 $4$ 位数字的字符串 `hhmm`(前两位为小时 $hh$,后两位为分钟 $mm$),代表一条消息的本地发送时间。其中 $0 \le hh \le n-1$,$0 \le mm \le 59$。
> ⚠️ **最核心条件:输入的这 $n$ 行数据是严格按照时间先后顺序(Chronological Order)排列的。** 也就是说,最早到达第 $0$ 时区的消息在第一行,最晚到达的在最后一行。换算成第 $0$ 时区的时间后,必须满足**严格单调递增**。
输出格式
输出一行 $n$ 个由空格隔开的整数(范围 $0 \sim n-1$),代表输入中每条消息对应的时区编号。第一个数字对应输入的第一条消息,以此类推。
说明/提示
## 提示说明
### 样例解释
对于样例 $1$,共包含 $n = 5$ 条消息,一天的合法小时范围为 $0 \sim 4$。按照输出给出的时区序列 $3, 1, 0, 2, 4$ 进行换算,各消息到达第 $0$ 时区的时间如下:
* **第 $1$ 条消息:** 本地时间 $00:17$,来自第 $3$ 时区。换算后为 $00 + 3 = 03$ 点,即 $03:17$。
* **第 $2$ 条消息:** 本地时间 $02:50$,来自第 $1$ 时区。换算后为 $02 + 1 = 03$ 点,即 $03:50$。
* **第 $3$ 条消息:** 本地时间 $04:00$,来自第 $0$ 时区。换算后为 $04 + 0 = 04$ 点,即 $04:00$。
* **第 $4$ 条消息:** 本地时间 $02:01$,来自第 $2$ 时区。换算后为 $02 + 2 = 04$ 点,即 $04:01$。
* **第 $5$ 条消息:** 本地时间 $00:02$,来自第 $4$ 时区。换算后为 $00 + 4 = 04$ 点,即 $04:02$。
**检查结果:**
1. 换算后的第 $0$ 时区时间序列为:$03:17 < 03:50 < 04:00 < 04:01 < 04:02$,严格满足**单调递增**的收到顺序。
2. 分配的时区编号 $3, 1, 0, 2, 4$ 恰好不重不漏地使用了 $0 \sim 4$ 的所有时区。
3. 类似第 $3$ 条消息 $04:00$,它必须来自第 $0$ 时区。若来自其他大于 $0$ 的时区(如第 $1$ 时区),换算后的小时数将达到 $05$,超出 $[0, 4]$ 的合法范围。
### 数据规模与约定
* 对于 $100\%$ 的数据,满足 $5 \le n \le 60$。
* 对于每条消息的本地时间,满足 $0 \le hh \le n-1$,$0 \le mm \le 59$。
* 官方所有测试数据均保证**有且仅有唯一解**。
### 题目说明
* 本题翻译自 [BalticOI 2000 Day1 B Time Zones](https://boi.cses.fi/files/boi2000_day1.pdf)。
* 由 Gemini-3.1-pro-thinking 翻译。