#P1021. 神殿的平衡序列

神殿的平衡序列

神殿的平衡序列

题目描述

在远古的「均衡神殿」中,供奉着一条由非负整数组成的序列。祭司们称其为——「平衡序列」。

传说中,若从这条序列中截取任何一段长度至少为 2 的连续符文,那么:

  • 位于 原序列偶数位置(下标从 1 开始)的符文力量之和必须 大于等于 位于 原序列奇数位置 的符文力量之和。

只有满足这一律法,序列才能保持神殿的平衡。

然而岁月侵蚀,符文力量紊乱。你作为神殿的修补者,每次只能将某个符文的力量 减少 1(不能减为负)。你的任务是,通过最少的操作次数,使得序列重新成为平衡序列。


形式化的,给定一个长度为 nn 的非负整数序列 a1,a2,…,ana_1, a_2, \ldots, a_n,如果对于任意的 1≤l<r≤n1 \leq l < r \leq n 且 r−l+1≥2r - l + 1 \geq 2,都有:在区间 [l,r][l,r] 内,∑2∣iai≥∑2∤iai\sum_{2\mid i} a_i \geq \sum_{2\nmid i} a_i,则称序列 aa 为 平衡序列。 对于每次操作,你可以选择一个下标 ii(1≤i≤n1 \leq i \leq n),并将 aia_i 减少 11(前提是 ai>0a_i > 0)。 你需要计算出将序列 aa 变为平衡序列所需的最少操作次数,并输出变换后的平衡序列。

输入格式

每组测试数据包含多个测试用例。第一行为测试用例个数 tt(1≤t≤1041 \le t \le 10^4)。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn(2≤n≤2⋅1052 \le n \le 2 \cdot 10^5),表示数组 aa 的长度。

第二行为 nn 个非负整数 a1,a2,…,ana_1,a_2,\ldots,a_n(0≤ai≤1090 \le a_i \le 10^9),表示数组 aa 的元素。

保证所有测试用例的 nn 之和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例,第一行输出一个整数,表示把数组 aa 变为 平衡序列 所需的最少操作次数。

第二行输出nn 个非负整数 a1,a2,…,ana_1,a_2,\ldots,a_n(0≤ai≤1090 \le a_i \le 10^9),表示平衡序列 aia_i 的元素,如果有多组,则输出任意一组。

样例 1

8
4
3 8 4 4
4
0 2 3 5
2
3 1
5
2 3 1 4 2
4
0 2 4 1
5
3 1 4 5 1
11
3 0 5 4 4 5 3 0 3 4 1
12
410748345 10753674 975233308 193331255 893457280 279719251 704970985 412553354 801228787 44181004 1000000000 3829103
0
3 8 4 4
1
0 2 2 5
2
1 1
0
2 3 1 4 2
3
0 2 1 1
6
1 1 0 5 1
14
0 0 0 4 4 5 0 0 0 4 1
4450984776
10753674 10753674 0 193331255 193331255 279719251 86387996 412553354 44181004 44181004 0 3829103

提示

在第一个测试用例中,数组 aa 已经是平衡序列,因此答案为 00。以下是每个子数组的检查:

子数组 偶数下标之和 奇数下标之和 满足条件?
[3,8][3,8] 88 33 是
[8,4][8,4] 44
[4,4][4,4] 44
[3,8,4][3,8,4] 88 3+4=73+4=7
[8,4,4][8,4,4] 8+4=128+4=12 44
[3,8,4,4][3,8,4,4] 3+4=73+4=7

在第二个测试用例中,数组 aa 不是平衡序列:

子数组 偶数下标之和 奇数下标之和 满足条件?
[0,2][0,2] 22 00 是
[2,3][2,3] 33 否
[3,5][3,5] 55 是
[0,2,3][0,2,3] 22 0+3=30+3=3 否
[2,3,5][2,3,5] 2+5=72+5=7 33 是
[0,2,3,5][0,2,3,5] 0+3=30+3=3

但是,如果我们对下标 33 的元素进行一次操作(减 11),数组变为 [0,2,2,5][0,2,2,5],此时是平衡序列:

子数组 偶数下标之和 奇数下标之和 满足条件?
[0,2][0,2] 22 00 是
[2,2][2,2] 22
[2,5][2,5] 55
[0,2,2][0,2,2] 22 0+2=20+2=2
[2,2,5][2,2,5] 2+5=72+5=7 22
[0,2,2,5][0,2,2,5] 0+2=20+2=2

因此,答案为 11。