#E0034. 最长连续1

最长连续1

题目描述

给定一个长度为 nn 的数列 a1,a2,,an(0ai1)a_1, a_2, \ldots, a_n(0 \le a_i \le 1),数列 aa 中的每个元素均为 0011

你可以对这个数列进行最多 kk 次操作,每次操作,你可以选择数列中的任意一个元素 aia_i,并将 aia_i 的数值变为 11

你希望使最终的数列中存在最长的一段 11

换句话说,你可以将数列中最多 kk 个元素修改为 11,你希望使数列中最长的一段数值全为 11 的连续子序列的长度最长。

求:你能够构造出的最长的一段数值均为 11 的连续子序列的长度。

输入格式

第一行,两个整数 nnkk,以一个空格分隔(1n106;0kn1 \le n \le 10^6; 0 \le k \le n)。

第二行,nn 个整数 a1,a2,,an(0ai1)a_1, a_2, \ldots, a_n(0 \le a_i \le 1),两两之间以一个空格分隔。

输出格式

输出一个整数,表示在修改最多 kk 个数列元素为 11 的条件下,能够构造出的全为 11 的连续子序列的最大长度。

7 1
1 0 0 1 1 0 1
4
10 2
1 0 0 1 0 1 0 1 0 1
5

说明/提示

样例解释

样例1:一种最优方案是将 a6a_6 修改为 11,修改后的数列 a=[1,0,0,1,1,1,1]a = [1, 0, 0, 1, 1, 1, 1],此时最长的一段 11a4..a7a_4..a_7,长度为 44

样例2:一种最优方案是将 a5a_5a7a_7 修改为 11,修改后的数列 a=[1,0,0,1,1,1,1,1,0,1]a = [1, 0, 0, 1, 1, 1, 1, 1, 0, 1],此时最长的一段 11a4..a8a_4..a_8,长度为 55

数据规模与约定

  • 对于 20%20\% 的数据,n10n \le 10
  • 对于 50%50\% 的数据,n1000n \le 1000
  • 对于 80%80\% 的数据,n105n \le 10^5
  • 对于 100%100\% 的数据,1n106;0kn;0ai11 \le n \le 10^6; 0 \le k \le n; 0 \le a_i \le 1