#D0940. 两端删除

两端删除

题目描述

给定一个长度为 nn 的 0101 字符串。

你可以删除最左边若干个字符,也可以删除最右边若干个字符,两边删除的数量都可以为 00,也允许把整个字符串删空。

最终剩下的部分是原字符串的一个连续子串,也可能为空串

设删掉的字符中 1 的个数为 AA,剩下子串中 0 的个数为 BB。请最小化 max⁡(A,B)\max(A,B)。

输入格式

一行一个只包含 0 和 1 的字符串。

输出格式

输出一个整数,表示 max⁡(A,B)\max(A,B) 的最小值。

样例

1001001001001
3
111011001000
1
0101
1

样例解释

样例 1 中,可以保留子串 1001。原串中共有 55 个 1,保留了其中 22 个,因此删掉的 1 有 A=3A=3;保留子串中有 22 个 0,因此 B=2B=2。此时 max⁡(A,B)=3\max(A,B)=3,可以证明不存在更优方案。

样例 2 中,可以保留子串 111011。删掉的 1 有 11 个、剩下的 0 有 11 个,因此 max⁡(1,1)=1\max(1,1)=1。

样例 3 中,可以保留子串 1。此时删掉的 1 有 11 个,剩下的 0 有 00 个,因此 max⁡(1,0)=1\max(1,0)=1。

数据范围与约定

子任务 分值 限制
11 3030 1≤n≤1001\le n\le 100
22 1≤n≤20001\le n\le 2000
33 4040 1≤n≤2×1061\le n\le 2\times 10^6

对于 100%100\% 的数据,字符串只包含 0 和 1。