AT_dwango2017final_d 「ドワンゴからの挑戦状」製作秘話

题目描述

尼科尼科电视酱正在为 dwango 主办的编程竞赛「来自 Dwango 的挑战书」准备题目。题目如下: - 给定一个长度为 $N$ 的数列 $a_1, a_2, \ldots, a_N$,需要处理 $Q$ 个查询。 - 对于第 $i$ 个查询,提供了 $l_i, r_i, x_i$,执行以下操作: - 将 $x_i$ 加到数列中第 $l_i$ 到第 $r_i$ 项的每一个元素。然后,输出这些元素的最大值。 比赛前一天,电视酱顺利完成了准备工作并安心入睡。然而,第二天早上醒来时,她发现电脑完全无法启动。 尽管如此,电视酱成功恢复了数据,但数列的初始值 $a_1, a_2, \ldots, a_N$ 却没有恢复。 于是,她创造了一个新的问题:恢复这个初始数列。 现在,题目变化为: 你将获得 $N$ 和 $Q$,每个查询的参数 $l_i, r_i, x_i$ 以及结果 $y_i$。 你需要判断是否存在这样的原始数列 $a_1, a_2, \ldots, a_N$,如果存在,请输出一个可能的数列。 请注意,电视酱记得数列 $a_1, a_2, \ldots, a_N$ 中的所有元素都是整数,且绝对值不超过 $10^{18}$。因此,输出的数列也需满足这一条件。 题目保证,无论数列值有无这样的约束,都不会影响测试用例中是否存在满足条件的数列。

输入格式

输入以以下格式给出: > $N$ $Q$ $l_1$ $r_1$ $x_1$ $y_1$ $l_2$ $r_2$ $x_2$ $y_2$ $\ldots$ $l_Q$ $r_Q$ $x_Q$ $y_Q$

输出格式

如果不存在满足条件的数列 `a_i`,则输出 `NG`。 如果存在,请输出 `OK`,并在下一行按照顺序输出 $a_1, a_2, \ldots, a_N$,各元素之间用空格分隔。

说明/提示

- 所有输入均为整数 - $1 \leq N \leq 200,000$ - $1 \leq Q \leq 200,000$ - $1 \leq l_i \leq r_i \leq N$ - $|x_i| \leq 10^9$ - $|y_i| \leq 10^9$ ### 样例解释 1 对于实例中,加 $100$ 后 $a_1, a_2, a_3$ 的最大值为 $300$,例如 $200, 200, 200$ 就是一个满足条件的数列。 ### 样例解释 2 在这个例子中,第一个查询要求 $a_1, a_2, a_3$ 的最大值为 $100$,而第二个查询为 $101$。这明显存在矛盾,因此输出 `NG`。 ### 样例解释 3 对于这里的输入,只要第二个值满足约束,其他值如何都无所谓。 **本翻译由 AI 自动生成**