AT_future2018career_a 増減ソート

题目描述

给定一个长度为 $N = 30000$ 的数列 $A$,该数列包含从 $1$ 到 $N$ 的整数各一次。你需要在这个数列上进行 $K$ 次以下操作: - 选择整数 $i, j, k, l, v$,其中 $1 \leq i \leq j \leq N, 1 \leq k \leq l \leq N, 0 \leq v \leq N - 1$,然后将 $A$ 的第 $i$ 到 $j$ 个元素的值分别减少 $v$,同时将第 $k$ 到 $l$ 个元素的值分别增加 $v$。 - 数列 $A$ 中所有元素的值必须始终保持在 $1$ 到 $N$ 之间。这允许数列中存在重复的值。 - 操作中,区间 $[i, j]$ 和区间 $[k, l]$ 不能有重叠,并且这两个区间的长度必须相等。 你的目标是尽可能使数列 $A$ 的元素接近排序后的状态,即 $A_1 = 1, A_2 = 2, \ldots, A_N = N$。你需要最小化目标函数 $|A_1 - 1| + |A_2 - 2| + \ldots + |A_N - N|$ 的值。请输出能实现最小化的操作。

输入格式

输入形式如下: > $N \ K \ A_1 \ A_2 \ : \ A_N$

输出格式

输出形式如下,由 $K$ 行组成,每行描述一次操作,每行中的元素之间用空格分隔: > $i_1 \ j_1 \ k_1 \ l_1 \ v_1$ > $i_2 \ j_2 \ k_2 \ l_2 \ v_2$ > $\vdots$ > $i_K \ j_K \ k_K \ l_K \ v_K$ 对于每次操作 $t$,需要满足:$i_t \leq j_t$,$k_t \leq l_t$ 且 $j_t - i_t = l_t - k_t$。

说明/提示

### 约束条件 - $N = 30000$ - $1000 \leq K \leq 3000$ - 数列 $A$ 是 $1$ 到 $N$ 的数字的一个随机排列。 ### 评分方法 对于每个测试用例,其得分计算为 $1,000,000,000 - |A_1 - 1| - |A_2 - 2| - \ldots - |A_N - N|$。 共有 $41$ 个测试用例。每个测试用例对于 $K = 1000, 1050, 1100, \ldots, 2950, 3000$ 都要测试。所有测试用例的得分之和就是你的最终得分。 如果任何一个测试用例的输出格式不正确,则除 `example_01` 外的所有测试用例的得分均为 0。 **本翻译由 AI 自动生成**