Binary String Flip (p)

Added: 2025-09-12 22:56:48

Question Image

Binary String Flip (p)

Answer

✏️ Edit
t = int(input())
for _ in range(t):
    n, k = map(int, input().split())
    s = input().strip()

    for _ in range(k):
        ns = list(s)  # next state initialized with current state

        # we use only original s for checking
        for i in range(n):
            if s[i] == '1':
                ns[i] = '0'  # current one becomes zero

                if i > 0 and s[i-1] == '0':  # flip left neighbor only if it was '0'
                    ns[i-1] = '1'
                if i < n-1 and s[i+1] == '0':  # flip right neighbor only if it was '0'
                    ns[i+1] = '1'

        # update string for next second
        new_s = ''.join(ns)
        if new_s == s:  # if no change, break early (optimization)
            break
        s = new_s

    print(s)