题目描述
给定一个长度为 n 的数列 a1,a2,…,an(0≤ai≤1),数列 a 中的每个元素均为 0 或 1。
你可以对这个数列进行最多 k 次操作,每次操作,你可以选择数列中的任意一个元素 ai,并将 ai 的数值变为 1。
你希望使最终的数列中存在最长的一段 1。
换句话说,你可以将数列中最多 k 个元素修改为 1,你希望使数列中最长的一段数值全为 1 的连续子序列的长度最长。
求:你能够构造出的最长的一段数值均为 1 的连续子序列的长度。
输入格式
第一行,两个整数 n 和 k,以一个空格分隔(1≤n≤106;0≤k≤n)。
第二行,n 个整数 a1,a2,…,an(0≤ai≤1),两两之间以一个空格分隔。
输出格式
输出一个整数,表示在修改最多 k 个数列元素为 1 的条件下,能够构造出的全为 1 的连续子序列的最大长度。
7 1
1 0 0 1 1 0 1
4
10 2
1 0 0 1 0 1 0 1 0 1
5
说明/提示
样例解释
样例1:一种最优方案是将 a6 修改为 1,修改后的数列 a=[1,0,0,1,1,1,1],此时最长的一段 1 为 a4..a7,长度为 4;
样例2:一种最优方案是将 a5 和 a7 修改为 1,修改后的数列 a=[1,0,0,1,1,1,1,1,0,1],此时最长的一段 1 为 a4..a8,长度为 5。
数据规模与约定
- 对于 20% 的数据,n≤10
- 对于 50% 的数据,n≤1000
- 对于 80% 的数据,n≤105
- 对于 100% 的数据,1≤n≤106;0≤k≤n;0≤ai≤1