阿毛的小小便利店 C++

路人能不能也帮忙看一下 准备今年CCF能力认证普及和提高组做的模拟题

先说一下(审核官方麻烦受累看一下别老不过审行不行 一遍一遍挺没劲的昂)我是自己想过的!.!.!不是SSD(非伸手党!.!.!)!.!.!

题目描述
阿毛的小小便利店将开始营业了!他按顺序摆放了n件商品,它们从左到右依次用正整数1,2,...,n编号,并且每件商品只可能是牙刷或矿泉水。
位置连续且种类相同的商品称为一个“块”,这个“块”的长度等于“块”中商品的个数。所有“块”长度的最大值被认为是商品的“单调程度”。
为了合理摆放商品而不使顾客感到审美疲劳,阿毛打算从n件商品中拿出m个(m<n)。在拿出某一件商品后,与它左、右方向上相邻的两件商品的位置不再连续。
请你帮阿毛计算出,如果可以任选具体拿出的m件商品,那么剩余n-m件商品的“单调程度”的最小值是多少。

输入
从标准输入中读入数据。
输入共包含两行。
第一行包含两个正整数n,m,用空格隔开,分别表示商品的数量和将拿出商品的数量。
第二行包含一个长度为n的二进制串,其中第i个字符表示编号为i的商品的种类,1代表牙刷,0代表矿泉水。

输出
输出至标准输出。
输出共包含一行。
仅需输出一个正整数,表示剩余商品“单调程度”的最小值。

样例输入
3 1
001
样例输出
1
样例输入1
5 2
00011
样例输出1
1
样例输入2
13 2
1000100100111
样例输出2
2

问一下为什么示例输入
5 2
00011
的结果是1?
不应该是2吗?
Python代码拿去研究(已修改):

# 不做SSD,自己翻译成c++
n,m=map(int,input().split())
array=input()[:n]
cont=[]
i=0
l='2'
while i<n:
    if l==array[i]:
        cont[-1]+=1
    else:
        cont.append(1)
    l=array[i]
    i+=1
cont.sort(reverse=True)
ii=0
k=0
while 0 < m:
    cont[ii]-=1
    c,y=cont[ii]//2,cont[ii]%2
    cont.insert(k,c+y)
    ii+=1
    if ii>=len(cont)-1:
        break
    elif cont[0]>=cont[ii+1]:
        k=0
        ii=-1
    elif cont[ii]>=cont[ii+1]:
        k=ii
    cont[ii]=c
    m-=1
    ii+=1
print(max(cont))