CF1148E.Earth Wind and Fire

提高+/省选-

通过率:0%

时间限制:4.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

There are nn stones arranged on an axis. Initially the ii-th stone is located at the coordinate sis_i. There may be more than one stone in a single place.

You can perform zero or more operations of the following type:

  • take two stones with indices ii and jj so that si≤sjs_i \leq s_j, choose an integer dd (0≤2⋅d≤sj−si0 \leq 2 \cdot d \leq s_j - s_i), and replace the coordinate sis_i with (si+d)(s_i + d) and replace coordinate sjs_j with (sj−d)(s_j - d). In other words, draw stones closer to each other.

You want to move the stones so that they are located at positions t1,t2,…,tnt_1, t_2, \ldots, t_n. The order of the stones is not important — you just want for the multiset of the stones resulting positions to be the same as the multiset of t1,t2,…,tnt_1, t_2, \ldots, t_n.

Detect whether it is possible to move the stones this way, and if yes, construct a way to do so. You don't need to minimize the number of moves.

有 nn 块石头排列在一条数轴上。初始时,第 ii 块石头位于坐标 sis_i 处。同一位置上可能有多块石头。

你可以执行零次或多次如下操作:

  • 选取下标为 ii 和 jj 的两块石头,满足 si≤sjs_i \leq s_j;再任选一个整数 dd(满足 0≤2⋅d≤sj−si0 \leq 2 \cdot d \leq s_j - s_i),将 sis_i 替换为 (si+d)(s_i + d),同时将 sjs_j 替换为 (sj−d)(s_j - d)。换言之,使这两块石头彼此靠近。

你的目标是将石头移动至位置 t1,t2,…,tnt_1, t_2, \ldots, t_n。石头的顺序无关紧要——你只需使得最终所有石头所在位置构成的多重集,与 t1,t2,…,tnt_1, t_2, \ldots, t_n 构成的多重集完全相同。

请判断是否能通过上述操作实现该目标;若可以,请构造一种具体的操作方案。你无需最小化操作次数。

输入格式

The first line contains a single integer nn (1≤n≤3⋅1051 \le n \le 3 \cdot 10^5) – the number of stones.

The second line contains integers s1,s2,…,sns_1, s_2, \ldots, s_n (1≤si≤1091 \le s_i \le 10^9) — the initial positions of the stones.

The second line contains integers t1,t2,…,tnt_1, t_2, \ldots, t_n (1≤ti≤1091 \le t_i \le 10^9) — the target positions of the stones.

第一行包含一个整数 nn(1≤n≤3⋅1051 \le n \le 3 \cdot 10^5)——石头的数量。

第二行包含整数 s1,s2,…,sns_1, s_2, \ldots, s_n(1≤si≤1091 \le s_i \le 10^9)——石头的初始位置。

第三行包含整数 t1,t2,…,tnt_1, t_2, \ldots, t_n(1≤ti≤1091 \le t_i \le 10^9)——石头的目标位置。

输出格式

If it is impossible to move the stones this way, print "NO".

Otherwise, on the first line print "YES", on the second line print the number of operations mm (0≤m≤5⋅n0 \le m \le 5 \cdot n) required. You don't have to minimize the number of operations.

Then print mm lines, each containing integers i,j,di, j, d (1≤i,j≤n1 \le i, j \le n, si≤sjs_i \le s_j, 0≤2⋅d≤sj−si0 \leq 2 \cdot d \leq s_j - s_i), defining the operations.

One can show that if an answer exists, there is an answer requiring no more than 5⋅n5 \cdot n operations.

如果无法以这种方式移动石子,则输出 "NO"。

否则,第一行输出 "YES",第二行输出所需的操作次数 mm(0≤m≤5⋅n0 \le m \le 5 \cdot n)。你无需最小化操作次数。

然后输出 mm 行,每行包含三个整数 i,j,di, j, d(1≤i,j≤n1 \le i, j \le n,si≤sjs_i \le s_j,0≤2⋅d≤sj−si0 \leq 2 \cdot d \leq s_j - s_i),用于描述各次操作。

可以证明:若解存在,则必存在一个操作次数不超过 5⋅n5 \cdot n 的解。

输入输出样例

  • 输入#1

    5
    2 2 7 4 9
    5 4 5 5 5

    输出#1

    YES
    4
    4 3 1
    2 3 1
    2 5 2
    1 5 2
  • 输入#2

    3
    1 5 10
    3 5 7

    输出#2

    NO

说明/提示

Consider the first example.

  • After the first move the locations of stones is [2,2,6,5,9][2, 2, 6, 5, 9].
  • After the second move the locations of stones is [2,3,5,5,9][2, 3, 5, 5, 9].
  • After the third move the locations of stones is [2,5,5,5,7][2, 5, 5, 5, 7].
  • After the last move the locations of stones is [4,5,5,5,5][4, 5, 5, 5, 5].

考虑第一个例子。

  • 第一次移动后,石子的位置为 [2,2,6,5,9][2, 2, 6, 5, 9]。
  • 第二次移动后,石子的位置为 [2,3,5,5,9][2, 3, 5, 5, 9]。
  • 第三次移动后,石子的位置为 [2,5,5,5,7][2, 5, 5, 5, 7]。
  • 最后一次移动后,石子的位置为 [4,5,5,5,5][4, 5, 5, 5, 5]。

输入解题思路,AI测评打分。不知道怎么写?

首页