#7062. 双向删除

双向删除

题目描述

有一个长度为 nn 的数组 a1,a2,,ana_1, a_2, \dots, a_n,每个元素都是 0011。你可以进行若干次操作,每次操作可以选择删除数组的第一个元素或最后一个元素。你的目标是使得剩下的数组元素之和恰好为 SS。请求出最少需要多少次操作。如果无法实现,输出 1-1

输入格式

第一行包含两个整数 nnSS
第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n,每个整数为 0011

输出格式

输出一个整数,表示最少操作次数;若无法达到目标,输出 1-1

样例

16 2
1 1 0 0 1 0 0 1 1 0 0 0 0 0 1 1
7

样例解释
初始数组长度为 1616,元素总和为 77。要使得剩余元素和为 22,需要找到一段和为 22 的最长连续子数组。一种最优方案是保留第 66 到第 1414 个元素(下标从 11 开始),该段元素为 0 0 1 1 0 0 0 0 0,和为 22,长度为 99。因此需要删除前 55 个元素和后 22 个元素,共 77 次操作。可以证明不存在更少的操作次数。

数据范围与提示

  • 1n1000001 \le n \le 100000
  • 1S1000001 \le S \le 100000
  • ai{0,1}a_i \in \{0, 1\}
  • 对于 40%40\% 的数据,n100n \le 100