问题文
给定长度为 N=30000 的数列 A。A 中包含从 1 到 N 的整数,每个数值恰好出现一次。现在,你需要进行以下操作 K 次:
- 指定整数 $i, j, k, l, v (1 ≦ i ≦ j ≦ N, 1 ≦ k ≦ l ≦ N, 0 ≦ v ≦ N - 1)$。将 Ai,Ai+1,...,Aj 的值分别减少 v,将 Ak,Ak+1,...,Al 的值分别增加 v。
- 注意,A 的所有元素必须始终是 1 到 N 之间的整数。允许出现相同的数值。
- 另外,区间 \[i, j\] 和区间 \[k, l\] 不能重叠,并且两个区间的长度必须相等。
你需要输出一系列操作步骤,使得通过这些操作,尽可能接近 A 中每个元素的目标值 A1=1, A2=2, ... , AN=N。输出的操作步骤应该使得值 ∣A1−1∣+∣A2−2∣+…+∣AN−N∣ 尽可能小。
约束条件
- N=30000
- 1000≦K≦3000
- 给定的 A 是 1 到 N 的整数的随机排列。
输入
输入以以下格式给出。
N K
A1
A2
:
AN
输出
输出 K 次操作,具体格式如下。
i1 j1 k1 l1 v1
i2 j2 k2 l2 v2
:
iK jK kK lK vK
这里,对于任意的 t,需要满足 it≦jt,kt≦lt,jt−it=lt−kt。
评分方法
对于每个测试用例,根据生成的数列 A,得分为 $1,000,000,000 - |A_1 - 1| - |A_2 - 2| - … - |A_N - N|$。
共有 41 个测试用例。对于每个测试用例,K=1000,1050,1100,…,2950,3000。所有测试用例的得分之和将作为最终得分。
注意,如果输出格式错误,则除了 example_01 以外的得分都将为 0。
示例输入0
10 3
8
9
1
4
6
7
3
2
10
5
示例输出0
1 2 7 8 6
7 7 5 5 4
5 5 10 10 5
- 初始状态为 8,9,1,4,6,7,3,2,10,5。经过以下变化:
- 2,3,1,4,6,7,9,8,10,5
- 2,3,1,4,10,7,5,8,10,5
- 2,3,1,4,5,7,5,8,10,10
示例输入1
点击此处下载输入文件示例(zip)
评分结果中的 "example_01" 数据与此处相同。该数据也将作为评分目标。注意,example_01 的 K=2000。