数组元素均为正数。这样就可以用**滑动窗口(双指针)**维护当前区间的和:
r
向右扩张,把 a[r]
加入当前和 s
;s > k
,不断右移左指针 l
并减去 a[l]
,直到 s ≤ k
;s ≤ k
时,用 r-l+1
更新答案。海岸线上按顺序摆放着n个位置,每个位置i上有ai个贝壳。你需要选择一个连续的区间[L,R](1≦L≦R≦n)进行一次性收集,并将该区间内的全部贝壳装入背包。背包的容量为k,即一次收集的贝壳总数不能超过k。
请你计算可选择的区间的最大长度R−L+1。若不存在合法区间,则输出0。
在一行上输入两个整数n,k(1≦n≦2×10;1≦k≦1012),表示位置数量与背包容量。
在第二行上输入n个整数a1,a2,...,an(1≦ai≦109),表示每个位置的贝壳数量。
输出一个整数,表示一次合法收集的最大区间长度。
输入
5 7
2 1 5 2 3
输出
2
说明
可选区间如[1,2],总贝壳数为2+1=3≤7,长度为2;[4,5]的总贝壳数为2+3=5≤7,长度为2。不存在更长的合法区间,答案为2。
输入
1 1
12
输出
0