CF1148E Earth Wind and Fire

题目描述

有 $n$ 块石头排布在一条数轴上。初始时,第 $i$ 块石头位于坐标 $s_i$。同一个位置上可能有多块石头。 你可以进行零次或多次如下操作: - 选择两块编号为 $i$ 和 $j$ 的石头,满足 $s_i \leq s_j$,选择一个整数 $d$($0 \leq 2d \leq s_j - s_i$),将第 $i$ 块石头的位置替换为 $s_i + d$,将第 $j$ 块石头的位置替换为 $s_j - d$。也就是说,将两块石头相互靠近。 你希望通过若干次操作,使所有石头最终位于 $t_1, t_2, \ldots, t_n$ 这些位置。石头的顺序无关紧要——你只需要最终石头的位置的多重集合与 $t_1, t_2, \ldots, t_n$ 的多重集合相同即可。 请判断是否可以通过上述操作实现目标,如果可以,请构造一种操作方案。你不需要最小化操作次数。

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 3 \times 10^5$),表示石头的数量。 第二行包含 $n$ 个整数 $s_1, s_2, \ldots, s_n$($1 \leq s_i \leq 10^9$),表示石头的初始位置。 第三行包含 $n$ 个整数 $t_1, t_2, \ldots, t_n$($1 \leq t_i \leq 10^9$),表示石头的目标位置。

输出格式

如果无法通过上述操作实现目标,输出 "NO"。 否则,第一行输出 "YES"。第二行输出所需操作次数 $m$($0 \leq m \leq 5n$)。你不需要最小化操作次数。 接下来 $m$ 行,每行输出三个整数 $i, j, d$($1 \leq i, j \leq n$,$s_i \leq s_j$,$0 \leq 2d \leq s_j - s_i$),表示一次操作。 可以证明,如果存在可行方案,则一定存在不超过 $5n$ 次操作的方案。

说明/提示

请参考第一个样例。 - 第一次操作后,石头的位置为 $[2, 2, 6, 5, 9]$。 - 第二次操作后,石头的位置为 $[2, 3, 5, 5, 9]$。 - 第三次操作后,石头的位置为 $[2, 5, 5, 5, 7]$。 - 最后一次操作后,石头的位置为 $[4, 5, 5, 5, 5]$。 由 ChatGPT 4.1 翻译