#P7285. 「EZEC-5」修改数组

「EZEC-5」修改数组

题目描述

给定一个长度为 nn、元素由 0011 组成的数组。

现在可以选择若干(可以为 0)个值为 00 的元素,将其修改为 11

记:

  • xx 为数组中最长连续 11 子段的长度(规定,若所有数均为 00,则 xx00);
  • yy 为修改的元素的个数。

求要怎么修改才能使 xyx-y 最大,并构造一个方案(输出修改后的数组)。

输入格式

本题含有多组数据。

第一行一个整数 TT 表示数据组数。

接下来 2×T2\times T 行,每 22 行表示一组数据。

在一组数据中,第一行一个整数 nn,表示数组的长度;

第二行 nn 个整数(0 或 1),表示给定的数组。

输出格式

2×T2\times T 行,每 22 行表示一组数据。

在一组数据中,第一行输出一个整数表示 xyx-y 的最大值;

第二行 nn 个整数(0 或 1)表示修改以后的数组。如有多个方案,任意输出一种即可。

1
1
1
1
1
2
3
1 0 1
5
0 1 0 1 0
2
1 1 1
2
0 1 1 1 1

提示

本题采用捆绑测试。

对于所有数据,保证 T10,1n105T\le10,1\le n\le 10^5,数组元素 {0,1}\in \{0,1\}

  • Subtask 1(70 points):保证 1n101\le n\le 10
  • Subtask 2(30 points):无特殊限制。