Problem: N people are arranged in a row from left to right.  You are given a string S of length N consisting of `0` and `1`, and a positive integer K.  The i-th person from the left is standing on feet if the i-th character of S is `0`, and standing on hands if that character is `1`.  You will give the following direction at most K times (possibly zero):  **Direction** : Choose integers l and r satisfying 1 \leq l \leq r \leq N, and flip the l-th, (l+1)-th, ..., and r-th persons. That is, for each i = l, l+1, ..., r, the i-th person from the left now stands on hands if he/she was standing on feet, and stands on feet if he/she was standing on hands.  Find the maximum possible number of **consecutive** people standing on hands after at most K directions.

Submission attempts (in order):
import sys

N, K = [int(x) for x in input().split()] 
S = [int(x) for x in list(input())] 
index = [0] 
length = [0] 
zeros = 0 

for i in range(0, len(S) - 1): 
    if S[i] != S[i + 1]: 
        index.append(i + 1) 

if S[0] == 0: 
    
    for i in range(len(index)): 
        if len(index) % 2 == 0: 
            zeros = int(len(index) / 2)
        else: 
            zeros = int((len(index) + 1) / 2) 
            
    for i in range(len(index)): 
        if S[len(S) - 1] == 0: 
            if i % 2 == 1:
                length.append(index[i + 1] - index[i])
        else: 
            if (i % 2 ==1 and (i + 1) < len(index)):
                length.append(index[i + 1] - index[i])
            elif (i % 2 ==1 and (i + 1) == len(index)): 
                length.append((len(S) - 1) - index[i] + 1)

    for i in range(len(index)): 
        if K >= zeros: 
            print(len(S))
            sys.exit()
        
        elif i + (2 * K) <= len(index): 
            if i % 2 == 0: 
                if (i + (2 * K) - 1) < len(index) - 1:
                    length.append(index[(i + (2 * K) - 1) + 1] - index[i])
                elif (i + (2 * K) - 1) == len(index) - 1:
                    length.append((len(S) - 1) - index[i] + 1)
                elif (i + (2 * K) - 1) == len(index):
                    length.append(len(S) - index[i])
            else: 
                if i + (2 * K) < (len(index) - 1):
                    length.append(index[i + (2 * K) + 1] - index[i])
                elif i + (2 * K) == (len(index) - 1):
                    length.append((len(S) - 1) - index[i] + 1)
                elif i + (2 * K) == len(index):
                    length.append(len(S) - index[i])
                
    print(length)
    sys.exit()

else: 
    
    for i in range(len(index)): 
        if len(index) % 2 == 0: 
            zeros = int(len(index) / 2)
        else: 
            zeros = int((len(index) - 1) / 2) 
            
    for i in range(len(index)): 
        if S[len(S) - 1] == 0: 
            if i % 2 == 0:
                length.append(index[i + 1] - index[i])
        else: 
            if (i % 2 ==0 and (i + 1) < len(index)):
                length.append(index[i + 1] - index[i])
            elif (i % 2 ==0 and (i + 1) == len(index)): 
                length.append((len(S) - 1) - index[i] + 1)

    for i in range(len(index)): 
        if K >= zeros: 
            print(len(S))
            sys.exit()
        
        elif i + (2 * K) <= len(index): 
            if i % 2 == 0: 
                if i + (2 * K) < (len(index) - 1):
                    length.append(index[i + (2 * K) + 1] - index[i])
                elif i + (2 * K) == (len(index) - 1):
                    length.append((len(S) - 1) - index[i] + 1)
                elif i + (2 * K) == len(index):
                    length.append(len(S) - index[i])
                
            else: 
                if i + (2 * K) - 1 < (len(index) - 1):
                    length.append(index[(i + (2 * K) - 1) + 1] - index[i])
                elif i + (2 * K) - 1 == (len(index) - 1):
                    length.append((len(S) - 1) - index[i] + 1)
                elif i + (2 * K) - 1 == len(index):
                    length.append(len(S) - index[i])

                
    print(length)
    sys.exit()


import sys

N, K = [int(x) for x in input().split()] 
S = [int(x) for x in list(input())] 
index = [0] 
length = [0] 
zeros = 0 

for i in range(0, len(S) - 1): 
    if S[i] != S[i + 1]: 
        index.append(i + 1) 

if S[0] == 0: 
    
    for i in range(len(index)): 
        if len(index) % 2 == 0: 
            zeros = int(len(index) / 2)
        else: 
            zeros = int((len(index) + 1) / 2) 
            
    for i in range(len(index)): 
        if S[len(S) - 1] == 0: 
            if i % 2 == 1:
                length.append(index[i + 1] - index[i])
        else: 
            if (i % 2 ==1 and (i + 1) < len(index)):
                length.append(index[i + 1] - index[i])
            elif (i % 2 ==1 and (i + 1) == len(index)): 
                length.append((len(S) - 1) - index[i] + 1)

    for i in range(len(index)): 
        if K >= zeros: 
            print(len(S))
            sys.exit()
        
        elif i + (2 * K) <= (len(index) + 1): 
            if i % 2 == 0: 
                length.append(index[(i + (2 * K) - 1) + 1] - index[i])
            else: 
                if i + (2 * K) < (len(index) - 1):
                    length.append(index[i + (2 * K) + 1] - index[i])
                elif i + (2 * K) == (len(index) - 1):
                    length.append((len(S) - 1) - index[i] + 1)
        elif (i + (2 * K) == len(index) and i % 2 == 1):
            length.append(len(S) - index[i])
                
                
    print(max(length))
    sys.exit()

else: 
    
    for i in range(len(index)): 
        if len(index) % 2 == 0: 
            zeros = int(len(index) / 2)
        else: 
            zeros = int((len(index) - 1) / 2) 
            
    for i in range(len(index)): 
        if S[len(S) - 1] == 0: 
            if i % 2 == 0:
                length.append(index[i + 1] - index[i])
        else: 
            if (i % 2 ==0 and (i + 1) < len(index)):
                length.append(index[i + 1] - index[i])
            elif (i % 2 ==0 and (i + 1) == len(index)): 
                length.append((len(S) - 1) - index[i] + 1)

    for i in range(len(index)): 
        if K >= zeros: 
            print(len(S))
            sys.exit()
        
        elif i + (2 * K) <= (len(index) - 1): 
            if i % 2 == 0: 
                if i + (2 * K) < (len(index) - 1):
                    length.append(index[i + (2 * K) + 1] - index[i])
                elif i + (2 * K) == (len(index) - 1):
                    length.append((len(S) - 1) - index[i] + 1)
                
            else: 
                length.append(index[(i + (2 * K) - 1) + 1] - index[i])

                
    print(max(length))
    sys.exit()


import sys

N, K = [int(x) for x in input().split()] 
S = [int(x) for x in list(input())] 
index = [0] 
length = [0] 
zeros = 0 

for i in range(0, len(S) - 1): 
    if S[i] != S[i + 1]: 
        index.append(i + 1) 

if S[0] == 0: 
    
    for i in range(len(index)): 
        if len(index) % 2 == 0: 
            zeros = int(len(index) / 2)
        else: 
            zeros = int((len(index) + 1) / 2) 
            
    for i in range(len(index)): 
        if S[len(S) - 1] == 0: 
            if i % 2 == 1:
                length.append(index[i + 1] - index[i])
        else: 
            if (i % 2 ==1 and (i + 1) < len(index)):
                length.append(index[i + 1] - index[i])
            elif (i % 2 ==1 and (i + 1) == len(index)): 
                length.append((len(S) - 1) - index[i] + 1)

    for i in range(len(index)): 
        if K >= zeros: 
            print(len(S))
            sys.exit()
        
        elif i + (2 * K) <= (len(index) - 1): 
            if i % 2 == 0: 
                length.append(index[(i + (2 * K) - 1) + 1] - index[i])
            else: 
                if i + (2 * K) < (len(index) - 1):
                    length.append(index[i + (2 * K) + 1] - index[i])
                elif i + (2 * K) == (len(index) - 1):
                    length.append((len(S) - 1) - index[i] + 1)
        elif (i + (2 * K) == len(index) and i % 2 == 1):
            length.append(len(S) - index[i])
                
                
    print(max(length))
    sys.exit()

else: 
    
    for i in range(len(index)): 
        if len(index) % 2 == 0: 
            zeros = int(len(index) / 2)
        else: 
            zeros = int((len(index) - 1) / 2) 
            
    for i in range(len(index)): 
        if S[len(S) - 1] == 0: 
            if i % 2 == 0:
                length.append(index[i + 1] - index[i])
        else: 
            if (i % 2 ==0 and (i + 1) < len(index)):
                length.append(index[i + 1] - index[i])
            elif (i % 2 ==0 and (i + 1) == len(index)): 
                length.append((len(S) - 1) - index[i] + 1)

    for i in range(len(index)): 
        if K >= zeros: 
            print(len(S))
            sys.exit()
        
        elif i + (2 * K) <= (len(index) - 1): 
            if i % 2 == 0: 
                if i + (2 * K) < (len(index) - 1):
                    length.append(index[i + (2 * K) + 1] - index[i])
                elif i + (2 * K) == (len(index) - 1):
                    length.append((len(S) - 1) - index[i] + 1)
                
            else: 
                length.append(index[(i + (2 * K) - 1) + 1] - index[i])
        elif (i + (2 * K) == len(index) and i % 2 == 0):
            length.append(len(S) - index[i])

                
    print(max(length))
    sys.exit()


Verdicts: Wrong Answer

Runtime Error

Accepted