← Home
```go
package main

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

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var q int
	fmt.Fscan(in, &q)

	for tc := 0; tc < q; tc++ {
		var n int
		var k int64
		fmt.Fscan(in, &n, &k)
		var s string
		fmt.Fscan(in, &s)

		b := []byte(s)
		zeroPos := 0
		for j := 0; j < n; j++ {
			if b[j] == '0' {
				if j > zeroPos {
					cost := int64(j - zeroPos)
					if k >= cost {
						b[j], b[zeroPos] = b[zeroPos], b[j]
						k -= cost
						zeroPos++
					} else {
						b[j], b[j-int(k)] = b[j-int(k)], b[j]
						break
					}
				} else {
					zeroPos++
				}
			}
		}
		out.Write(b)
		out.WriteByte('\n')
	}
}
```