Problem p03074 (python)

Fixed submission:
N,K = list(map(int,input().split()))
A = input()
A = list(A)
A = list(map(int,A))
l = [0]
s = []

for i in range(N-1):
    if A[i] != A[i+1]:
        l.append(i+1)
        s.append(l[len(l)-1]-l[len(l)-2])
l.append(N)
s.append(l[len(l)-1]-l[len(l)-2])
a = 0
right = 0
left = 0
g = 0
su = 0
if A[0] == 0:
    for i in range(len(s)):
        su +=s[right]
        if right%2==0:
            g += 1
        right +=1
        if g<=K:
            a = max(a,su)
        else:
            while g>K:
              su -= s[left]
              if left%2==0:
                  g -=1
              left +=1
        a = max(a,su)
else:
    for i in range(len(s)):
        su +=s[right]
        if right%2==1:
            g += 1
        right +=1
        if g<=K:
            a = max(a,su)
        else:
            while g>K:
              su -= s[left]
              if left%2==1:
                  g -=1
              left +=1
        a = max(a,su)

print(a)

Buggy submission (verdict: Runtime Error):
a = 0
right = 0
left = 0
g = 0
su = 0
if A[0] == 0:
    for i in range(len(s)):
        su +=s[right]
        if right%2==0:
            g += 1
        right +=1
        if g<=K:
            a = max(a,su)
        else:
            while g>K:
              su -= s[left]
              if left%2==0:
                  g -=1
              left +=1
        a = max(a,su)
else:
    for i in range(len(s)):
        su +=s[right]
        if right%2==1:
            g += 1
        right +=1
        if g<=K:
            a = max(a,su)
        else:
            while g>K:
              su -= s[left]
              if left%2==1:
                  g -=1
              left +=1
        a = max(a,su)
print(a)

Buggy submission (verdict: Runtime Error):
import numpy as np
N,K = list(map(int,input().split()))
A = input()
A = list(A)
A = list(map(int,A))
l = [0]
s = []

for i in range(N-1):
    if A[i] != A[i+1]:
        l.append(i+1)
        s.append(l[len(l)-1]-l[len(l)-2])
l.append(N)
s.append(l[len(l)-1]-l[len(l)-2])
a = 0
right = 0
left = 0
g = 0
su = 0
if A[0] == 0:
    for i in range(len(s)):
        su +=s[right]
        if right%2==0:
            g += 1
        if g<=K:
            a = max(a,su)
            right +=1
        else:
            while g>K:
              su -= s[left]
              if left%2==0:
                  g -=1
              left +=1
else:
    for i in range(len(s)):
        su +=s[right]
        if right%2==1:
            g += 1
        if g<=K:
            a = max(a,su)
            right +=1
        else:
            while g>K:
              su -= s[left]
              if left%2==1:
                  g -=1
              left +=1
print(a)

Buggy submission (verdict: Runtime Error):
import sys
sys.setrecursionlimit(10**10) 
N,K = list(map(int,input().split()))
A = input()
A = list(A)
A = list(map(int,A))
def serch_right(x,K,t):
    global count0,count1
    if x<0 or len(A)<=x:
        return count1
    if A[x]==0:
        if t == 0:
            t=0
            count1 +=1
        elif t==1 :
            if count0==K:
                return count1
            t=0
            count1 +=1
            count0 +=1

    else:
        t=1
        count1+=1
    count1 = serch_right(x+1,K,t)
    return count1
def serch_left(x,A):
    global count2
    if x<0 or len(A)<=x or A[x]==0:
        return count2
    if A[x]==1:
        count2 +=1
    count2 = serch_left(x-1,A)     
    return count2
count =0
count0 =0
count1 =0
for i in range(len(A)):
    if A[i]==0 and (A[i-1]!=0 or i == 0):
        count2 = 0
        count1 =0
        count0 =0
        t = 1
        count1 = serch_right(i,K,t)
        count2 = serch_left(i-1,A)
        count1 = count1 + count2
        count = max(count1,count)
print(max(count,1))

Buggy submission (verdict: Runtime Error):
import sys
sys.setrecursionlimit(10**10) 
N,K = list(map(int,input().split()))
A = input()
A = list(A)
A = list(map(int,A))
def serch_right(x,K,t):
    global count0,count1
    if x<0 or len(A)<=x:
        return count1
    if A[x]==0:
        if t == 0:
            t=0
            count1 +=1
        elif t==1 :
            if count0==K:
                return count1
            t=0
            count1 +=1
            count0 +=1
            
    else:
        t=1
        count1+=1
    count1 = serch_right(x+1,K,t)
    return count1
def serch_left(x,A):
    global count2
    if x<0 or len(A)<=x or A[x]==0:
        return count2
    if A[x]==1:
        count2 +=1
    count2 = serch_left(x-1,A)     
    return count2
count =0
count0 =0
count1 =0
for i in range(len(A)):
    if A[i]==0 and (A[i-1]!=0 or i == 0):
        count2 = 0
        count1 =0
        count0 =0
        t = 1
        count1 = serch_right(i,K,t)
        count2 = serch_left(i-1,A)
        count1 = count1 + count2
        count = max(count1,count)
print(max(count,1))

Buggy submission (verdict: Runtime Error):
N,K = list(map(int,input().split()))
sys.setrecursionlimit(10**10) 
A = input()
A = list(A)
A = list(map(int,A))
def serch_right(x,K,t):
    global count0,count1
    if x<0 or len(A)<=x:
        return count1
    if A[x]==0:
        if t == 0:
            t=0
            count1 +=1
        elif t==1 :
            if count0==K:
                return count1
            t=0
            count1 +=1
            count0 +=1
            
    else:
        t=1
        count1+=1
    count1 = serch_right(x+1,K,t)
    return count1
def serch_left(x,A):
    global count2
    if x<0 or len(A)<=x or A[x]==0:
        return count2
    if A[x]==1:
        count2 +=1
    count2 = serch_left(x-1,A)     
    return count2
count =0
count0 =0
count1 =0
for i in range(len(A)):
    if A[i]==0 and (A[i-1]!=0 or i == 0):
        count2 = 0
        count1 =0
        count0 =0
        t = 1
        count1 = serch_right(i,K,t)
        count2 = serch_left(i-1,A)
        count1 = count1 + count2
        count = max(count1,count)
print(max(count,1))

Buggy submission (verdict: Runtime Error):
N,K = list(map(int,input().split()))
A = input()
A = list(A)
A = list(map(int,A))
def serch_right(x,K,t):
    global count0,count1
    if x<0 or len(A)<=x:
        return count1
    if A[x]==0:
        if t == 0:
            t=0
            count1 +=1
        elif t==1 :
            if count0==K:
                return count1
            t=0
            count1 +=1
            count0 +=1
            
    else:
        t=1
        count1+=1
    count1 = serch_right(x+1,K,t)
    return count1
def serch_left(x,A):
    global count2
    if x<0 or len(A)<=x or A[x]==0:
        return count2
    if A[x]==1:
        count2 +=1
    count2 = serch_left(x-1,A)     
    return count2
count =0
count0 =0
count1 =0
for i in range(len(A)):
    if A[i]==0 and (A[i-1]!=0 or i == 0):
        count2 = 0
        count1 =0
        count0 =0
        t = 1
        count1 = serch_right(i,K,t)
        count2 = serch_left(i-1,A)
        count1 = count1 + count2
        count = max(count1,count)
print(max(count,1))

Buggy submission (verdict: Runtime Error):
N,K = list(map(int,input().split()))
A = input()
A = list(A)
A = list(map(int,A))
def serch_right(x,K,t):
    global count0,count1
    if x<0 or len(A)<=x:
        return count1
    if A[x]==0:
        if t == 0:
            t=0
            count1 +=1
        elif t==1 :
            if count0==K:
                return count1
            t=0
            count1 +=1
            count0 +=1
            
    else:
        t=1
        count1+=1
    count1 = serch_right(x+1,K,t)
    return count1
def serch_left(x,A):
    global count2
    if x<0 or len(A)<=x or A[x]==0:
        return count2
    if A[x]==1:
        count2 +=1
    count2 = serch_left(x-1,A)     
    return count2
count =0
count0 =0
count1 =0
for i in range(len(A)):
    if A[i]==0 and (A[i-1]!=0 or i == 0):
        count2 = 0
        count1 =0
        count0 =0
        t = 1
        count1 = serch_right(i,K,t)
        count2 = serch_left(i-1,A)
        count1 = count1 + count2
        count = max(count1,count)
print(max(count,1))

Buggy submission (verdict: Runtime Error):
N,K = list(map(int,input().split()))
A = input()
A = list(A)
A = list(map(int,A))
count =0
def serch (x,A,K,count1,count0):
    if x<0 or len(A)<=x:
        return count1
    if A[x] == 0:
        if A[x-1]==0 and x!=0:
            count1 +=1
            count1 = serch(x+1,A,K,count1,count0)
        elif count0==K:
            return count1
        elif A[x-1]!=0:
            count0 +=1
            count1 +=1
            count1 = serch(x+1,A,K,count1,count0)
    else:
        count1 +=1
        count1 = serch(x+1,A,K,count1,count0)
    return count1
for i in range(len(A)):
    count1 =0
    count0 =0
    count1 = serch(i,A,K,count1,count0)
    count = max(count1,count)
print(count)