Problem p03074 (python)

Fixed submission:
N, K = input().split()
N = int(N)
K = int(K)
S = input()
A = []
for i in range(len(S)-1):
    if (S[i]=="0" and S[i+1]=="1") or (S[i]=="1" and S[i+1]=="0"):
        A.append(i+1)
A.insert(0, 0)
A.append(N)
M = []
if S == "0"*N:
    M.append(len(S))
elif S[0] == "0":
    if K > len(A)//2:
        K = len(A)//2
    M.append(A[K*2]-A[0])
    a = 1
    b = a + K*2 + 1
elif S[0] == "1":
    if K > (len(A)-1)//2:
        K = (len(A)-1)//2
    a = 0
    b = a + K*2 + 1
if S == "0"*N:
    pass
elif S[-1] == "1":
    while b <= len(A):
        M.append(A[b]-A[a])
        a += 2
        b = a + K*2 + 1
elif S[-1] == "0":
    while b <= len(A)-1:
        M.append(A[b]-A[a])
        a += 2
        b = a + K*2 + 1
    M.append(A[-1]-A[-1-K*2])
print(max(M))

Buggy submission (verdict: Runtime Error):
N, K = input().split()
N = int(N)
K = int(K)
S = input()
A = []
for i in range(len(S)-1):
    if (S[i]=="0" and S[i+1]=="1") or (S[i]=="1" and S[i+1]=="0"):
        A.append(i+1)
A.insert(0, 0)
A.append(N)
M = []
if S[0] == "0":
    if K > len(A)//2:
        K = len(A)//2
    M.append(A[K*2]-A[0])
    a = 1
    b = a + K*2 + 1
elif S[0] == "1":
    if K > (len(A)-1)//2:
        K = (len(A)-1)//2
    a = 0
    b = a + K*2 + 1
if S[-1] == "1":
    while b <= len(A):
        M.append(A[b]-A[a])
        a += 2
        b = a + K*2 + 1
elif S[-1] == "0":
    while b <= len(A)-1:
        M.append(A[b]-A[a])
        a += 2
        b = a + K*2 + 1
    M.append(A[-1]-A[-1-K*2])
print(max(M))

Buggy submission (verdict: Runtime Error):
N, K = input().split()
N = int(N)
K = int(K)
S = input()
A = []
for i in range(len(S)-1):
    if (S[i]=="0" and S[i+1]=="1") or (S[i]=="1" and S[i+1]=="0"):
        A.append(i+1)
A.insert(0, 0)
A.append(N)
if K > len(A)//2:
    K = len(A)//2
M = []
while K > 0:
    if S[0] == "0":
        M.append(A[K*2]-A[0])
        a = 1
        b = a + K*2 + 1
    elif S[0] == "1":
        a = 0
        b = a + K*2 + 1
    if S[-1] == "1":
        while b <= len(A):
            M.append(A[b]-A[a])
            a += 2
            b = a + K*2 + 1
    elif S[-1] == "0":
        while b <= len(A)-1:
            M.append(A[b]-A[a])
            a += 2
            b = a + K*2 + 1
        M.append(A[-1]-A[-1-K*2])
    K -= 1
print(max(M))

Buggy submission (verdict: Runtime Error):
N, K = input().split()
N = int(N)
K = int(K)
S = input()
A = []
for i in range(len(S)-1):
    if (S[i]=="0" and S[i+1]=="1") or (S[i]=="1" and S[i+1]=="0"):
        A.append(i+1)
A.insert(0, 0)
A.append(N)
if K > len(A)//2:
    K = len(A)//2
M = []
while K > 0:
    if S[0] == "0":
        M.append(A[K*2]-A[0])
        a = 1
        b = a + K*2 + 1
    elif S[0] == "1":
        a = 0
        b = a + K*2 + 1
    if S[-1] == "1":
        while b <= len(A):
            M.append(A[b]-A[a])
            a += 2
            b = a + K*2 + 1
    elif S[-1] == "0":
        while b <= len(A)-1:
            M.append(A[b]-A[a])
            a += 2
            b = a + K*2 + 1
        M.append(A[-1]-A[-1-K*2])
    K -= 1
    print(max(M))

Buggy submission (verdict: Runtime Error):
N, K = input().split()
N = int(N)
K = int(K)
S = input()
A = []
for i in range(len(S)-1):
    if (S[i]=="0" and S[i+1]=="1") or (S[i]=="1" and S[i+1]=="0"):
        A.append(i+1)
A.insert(0, 0)
A.append(N)
if len(A) == 2:
    print(len(S))
else:
    M = []
    while K > 0:
        if S[0] == "0":
            M.append(A[K*2]-A[0])
            a = 1
            b = a + K*2 + 1
        elif S[0] == "1":
            a = 0
            b = a + K*2 + 1
        if S[-1] == "1":
            while b <= len(A):
                M.append(A[b]-A[a])
                a += 2
                b = a + K*2 + 1
        elif S[-1] == "0":
            while b <= len(A)-1:
                M.append(A[b]-A[a])
                a += 2
                b = a + K*2 + 1
            M.append(A[-1]-A[-1-K*2])
        K -= 1
    print(max(M))

Buggy submission (verdict: Runtime Error):
N, K = input().split()
N = int(N)
K = int(K)
S = input()
A = []
for i in range(len(S)-1):
    if (S[i]=="0" and S[i+1]=="1") or (S[i]=="1" and S[i+1]=="0"):
        A.append(i+1)
A.insert(0, 0)
A.append(N)
M = []
if S[0] == "0":
    M.append(A[K*2]-A[0])
    a = 1
    b = a + K*2 + 1
elif S[0] == "1":
    a = 0
    b = a + K*2 + 1
if S[-1] == "1":
    while b <= len(A):
        M.append(A[b]-A[a])
        a += 2
        b = a + K*2 + 1
elif S[-1] == "0":
    while b <= len(A)-1:
        M.append(A[b]-A[a])
        a += 2
        b = a + K*2 + 1
    M.append(A[-1]-A[-1-K*2])
print(max(M))

Buggy submission (verdict: Runtime Error):
N, K = input().split()
N = int(N)
K = int(K)
S = input()
A = []
for i in range(len(S)-1):
    if (S[i]=="0" and S[i+1]=="1") or (S[i]=="1" and S[i+1]=="0"):
        A.append(i+1)
A.insert(0, 0)
A.append(N)
M = []
a = 0
while a <= len(A)-K*2-1:
    b = a + K*2 + 1
    M.append(A[b]-A[a])
    a += 2
print(max(M))