#7062. 双向删除
双向删除
题目描述
有一个长度为 的数组 ,每个元素都是 或 。你可以进行若干次操作,每次操作可以选择删除数组的第一个元素或最后一个元素。你的目标是使得剩下的数组元素之和恰好为 。请求出最少需要多少次操作。如果无法实现,输出 。
输入格式
第一行包含两个整数 和 。
第二行包含 个整数 ,每个整数为 或 。
输出格式
输出一个整数,表示最少操作次数;若无法达到目标,输出 。
样例
16 2
1 1 0 0 1 0 0 1 1 0 0 0 0 0 1 1
7
样例解释
初始数组长度为 ,元素总和为 。要使得剩余元素和为 ,需要找到一段和为 的最长连续子数组。一种最优方案是保留第 到第 个元素(下标从 开始),该段元素为 0 0 1 1 0 0 0 0 0,和为 ,长度为 。因此需要删除前 个元素和后 个元素,共 次操作。可以证明不存在更少的操作次数。
数据范围与提示
- 对于 的数据,。