双指针遍历搜索即可

左指针右移,子串变短,01序列变少。右指针右移,子串变长,01序列变多。然后根据当前子串中01序列数量判断移动哪一个指针即可。注意01序列总数变化和当前子串中的0和1的数量相关。

n, k = map(int, input().split())

s = input()
curr_k = 0
first = s.find("0")  # 前置1没有意义
curr_0 = 1
curr_1 = 0
i = first
j = first
while j < n:
    if curr_k < k:
        if j == n-1:
            j += 1
            continue
        if s[j+1] == "0":
            curr_0 += 1
        else:
            curr_1 += 1
            curr_k += curr_0
        j += 1
    elif curr_k > k:
        if s[i] == "0":
            curr_0 -= 1
            curr_k -= curr_1
        else:
            curr_1 -= 1
        i += 1
    else:
        print(i+1, j+1)
        break
else:
    print(-1)