问题 E: 艰难的过程

内存限制:256 MB 时间限制:2 S
题面:传统 评测方式:文本比较 上传者:
提交:13 通过:5

题目描述

给你一个有n个元素的数组a。a的每个元素不是0就是1。
让我们把a中连续元素的最长子段的长度表示为f(a),该子段只由数字1组成。你可以将不超过k个0改为1,以使f(a)最大化。


You are given an array a with n elements. Each element of a is either 0 or 1.
Let's denote the length of the longest subsegment of consecutive elements in a, consisting of only numbers one, as f(a). You can change no more than k zeroes to ones to maximize f(a).
Input
The first line contains two integers n and k (1≤n≤3·105,0≤kn) − the number of elements in a and the parameter k.
The second line contains n integers ai (0≤ai≤1) − the elements of a.
Output
On the first line print a non-negative integer z − the maximal value of f(a) after no more than k changes of zeroes to ones.
On the second line print n integers aj − the elements of the array a after the changes.
If there are multiple answers, you can print any one of them.
Examples
Input
7 1
1 0 0 1 1 0 1
Output
4
1 0 0 1 1 1 1
Input
10 2
1 0 0 1 0 1 0 1 0 1
Output
5
1 0 0 1 1 1 1 1 0 1
输入
10 3
0 0 1 0 0 1 0 0 1 1
输出
6
0 0 1 0 1 1 1 1 1 1





输入格式

第一行包含两个整数n和k(1≤n≤3-105,0≤k≤n)--a中元素的数目和参数k。
第二行包含n个整数ai(0≤ai≤1)--a中的元素。

输出格式

在第一行打印一个非负整数z--f(a)从0到1的变化数不超过k后的最大值。
第二行打印n个整数aj--变化后的数组a的元素。
如果有多个答案,你可以打印其中任何一个。

输入样例 复制

7 1
1 0 0 1 1 0 1

输出样例 复制

4
1 0 0 1 1 1 1