QOJ.ac

QOJ

Time Limit: 2.0 s Memory Limit: 1024 MB Total points: 100 Hackable ✓

#17850. 仪式广场

Statistics

仪式广场

城市建成后,人们举行了仪式来赞美光芒。小灯布置在村庄广场的各处,每一盏灯都散发着独特而柔和的光芒。

现在,仪式的下一阶段开始了。每盏灯都开始沿着选定的路径行进,将光芒洒向未知的空间。它们的移动必须经过精心编排,确保路径互不交叉——每盏灯都必须以自己安静的节奏流动。

追寻它们曾经描绘的轨迹,重现光芒向外扩散的那一刻。


广场的地面表示为一个具有 $H$ 行和足够多列的网格。从上往下数第 $r$ 行、从左往右数第 $c$ 列的单元格记为 $(r, c)$。

岛上的居民在这个网格上放置了 $N$ 个光源。作为仪式的一部分,每个光源必须向右移动(即向列号增加的方向)指定的距离。

由于同步光源移动的复杂性,必须遵守以下几个约束条件:

  • 每个光源都固定在一个 $1 \times 1$ 的正方形瓷砖中心。
  • 这 $N$ 块瓷砖必须各自移动一个介于 $1$ 到 $N$ 之间且互不相同的整数距离。
  • 所有 $N$ 块瓷砖同时开始移动,以恒定的速度行进,并且必须同时到达目的地。
  • 在移动过程中的任何时刻,瓷砖之间都不能重叠(但允许边缘接触)。
  • 所有移动完成后,任意两个光源不能结束在同一列。

例如,考虑 $H = 2$ 且 $N = 4$,光源的初始位置为 $(1, 1), (1, 3), (2, 2), (2, 3)$。在下图中,每个光源瓷砖用一个彩色正方形表示。

如果我们为这些光源分配以下移动距离,则上述所有条件均得到满足:

索引 初始位置 移动距离 最终位置
1 $(1, 1)$ 2 $(1, 3)$
2 $(1, 3)$ 1 $(1, 4)$
3 $(2, 2)$ 3 $(2, 5)$
4 $(2, 3)$ 4 $(2, 7)$

下图是这些光源在三个时间点的视觉表示:起点、移动的中点以及最终位置。

你的任务是确定是否可以为这些光源分配移动距离,使得满足所有给定的条件。如果可以,请提供一种有效的分配方案。

输入格式

第一行包含两个空格分隔的整数 $H$ 和 $N$。

接下来的 $N$ 行,每行包含两个空格分隔的整数 $r_i$ 和 $c_i$,表示第 $i$ 个光源的初始位置为 $(r_i, c_i)$。

数据范围

  • $1 \le H \le 10^9$
  • $2 \le N \le 2 \times 10^5$
  • $1 \le r_i \le H$ ($1 \le i \le N$)
  • $1 \le c_i \le 10^9$ ($1 \le i \le N$)
  • $(r_i, c_i) \neq (r_j, c_j)$ ($1 \le i < j \le N$)

输出格式

如果可以分配移动距离以满足所有条件,在第一行输出 YES

在第二行输出 $N$ 个空格分隔的整数 $B_1, B_2, \dots, B_N$,其中 $B_i$ 表示第 $i$ 个光源应该向右移动的距离。如果存在多个有效解,输出其中任意一个。

如果不可能,在单行中输出 NO

子任务

  • 子任务 1(12 分):$N \le 9$
  • 子任务 2(5 分):$c_1 = c_2 = \dots = c_N$
  • 子任务 3(32 分):$H = 1, N \le 1000$
  • 子任务 4(11 分):$H = 1$
  • 子任务 5(40 分):无附加限制。

样例

输入样例 1

2 4
1 1
1 3
2 2
2 3

输出样例 1

YES
2 1 3 4

输入样例 2

10 3
7 1000000000
9 1000000000
3 1000000000

输出样例 2

YES
2 1 3

输入样例 3

1 5
1 1
1 3
1 5
1 7
1 9

输出样例 3

YES
5 4 3 2 1

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.