← Home
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	in := bufio.NewReaderSize(os.Stdin, 1<<20)

	var n, k int
	var s string
	fmt.Fscan(in, &n, &k, &s)

	pos := make([]int, 0, n)
	for i := 0; i < n; i++ {
		if s[i] == '0' {
			pos = append(pos, i)
		}
	}

	feasible := func(b int) bool {
		maxDiff := b + 1
		bars := 1
		cur := 0

		for cur < len(pos)-1 {
			next := cur
			for next+1 < len(pos) && pos[next+1]-pos[cur] <= maxDiff {
				next++
			}
			if next == cur {
				return false
			}
			cur = next
			bars++
			if bars > k {
				return false
			}
		}
		return true
	}

	lo, hi := 0, n-2
	for lo < hi {
		mid := (lo + hi) / 2
		if feasible(mid) {
			hi = mid
		} else {
			lo = mid + 1
		}
	}

	out := bufio.NewWriterSize(os.Stdout, 1<<20)
	fmt.Fprint(out, lo)
	out.Flush()
}