← Home
For problem statement at 2000-2999/2000-2099/2020-2029/2026/problemC.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2020-2029/2026/verifierC.go ends with All tests passed can you fix the verifier? ```go
package main

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

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	readInt := func() int {
		scanner.Scan()
		x, _ := strconv.Atoi(scanner.Text())
		return x
	}
	readString := func() string {
		scanner.Scan()
		return scanner.Text()
	}

	t := readInt()
	for tc := 0; tc < t; tc++ {
		n := readInt()
		s := readString()

		D := make([]int, 0, n)
		for i := n; i >= 1; i-- {
			if s[i-1] == '1' {
				D = append(D, i)
			}
		}
		m := len(D)
		maxK := m
		if n/2 < maxK {
			maxK = n / 2
		}

		feasible := func(k int) bool {
			prev := n + 1
			for i := 0; i < k; i++ {
				L := 2 * (k - i)
				U := D[i]
				f := U
				if prev-1 < f {
					f = prev - 1
				}
				if f < L {
					return false
				}
				prev = f
			}
			return true
		}

		computeSum := func(k int) int64 {
			prev := n + 1
			var sum int64 = 0
			for i := 0; i < k; i++ {
				U := D[i]
				f := U
				if prev-1 < f {
					f = prev - 1
				}
				sum += int64(f)
				prev = f
			}
			return sum
		}

		lo, hi := 0, maxK
		for lo <= hi {
			mid := (lo + hi) / 2
			if feasible(mid) {
				lo = mid + 1
			} else {
				hi = mid - 1
			}
		}
		bestK := hi
		discount := computeSum(bestK)
		total := int64(n) * int64(n+1) / 2
		ans := total - discount
		fmt.Fprintln(writer, ans)
	}
}
```