← Home
For problem statement at 1000-1999/1000-1099/1010-1019/1017/problemD.txt this is a correct solution, but verifier at 1000-1999/1000-1099/1010-1019/1017/verifierD.go ends with All tests passed can you fix the verifier? ```go
package main

import (
	"bufio"
	"os"
)

func readInt(r *bufio.Reader) int {
	c, err := r.ReadByte()
	for err == nil && c <= ' ' {
		c, err = r.ReadByte()
	}
	if err != nil {
		return 0
	}
	nVal := 0
	for err == nil && c > ' ' {
		nVal = nVal*10 + int(c-'0')
		c, err = r.ReadByte()
	}
	return nVal
}

func readStringAsInt(r *bufio.Reader, nLen int) int {
	c, err := r.ReadByte()
	for err == nil && c <= ' ' {
		c, err = r.ReadByte()
	}
	if err != nil {
		return 0
	}
	nVal := 0
	for i := 0; i < nLen; i++ {
		nVal = nVal<<1 | int(c-'0')
		c, err = r.ReadByte()
	}
	return nVal
}

func writeInt(w *bufio.Writer, n int) {
	if n == 0 {
		w.WriteByte('0')
		w.WriteByte('\n')
		return
	}
	var buf [20]byte
	i := 19
	for n > 0 {
		buf[i] = byte(n%10 + '0')
		n /= 10
		i--
	}
	w.Write(buf[i+1:])
	w.WriteByte('\n')
}

func main() {
	r := bufio.NewReaderSize(os.Stdin, 1<<20)
	w := bufio.NewWriterSize(os.Stdout, 1<<20)
	defer w.Flush()

	n := readInt(r)
	m := readInt(r)
	q := readInt(r)

	if n == 0 {
		return
	}

	weights := make([]int, n)
	for i := 0; i < n; i++ {
		weights[i] = readInt(r)
	}

	count := make([]int, 1<<n)
	for i := 0; i < m; i++ {
		val := readStringAsInt(r, n)
		count[val]++
	}

	wuMask := make([]int, 1<<n)
	for mask := 0; mask < (1 << n); mask++ {
		sum := 0
		for i := 0; i < n; i++ {
			if (mask & (1 << (n - 1 - i))) == 0 {
				sum += weights[i]
			}
		}
		wuMask[mask] = sum
	}

	maxVal := 1 << n
	ans := make([][101]int, maxVal)
	for t := 0; t < maxVal; t++ {
		for x := 0; x < maxVal; x++ {
			cost := wuMask[t^x]
			if cost <= 100 {
				ans[t][cost] += count[x]
			}
		}
		for c := 1; c <= 100; c++ {
			ans[t][c] += ans[t][c-1]
		}
	}

	for i := 0; i < q; i++ {
		t := readStringAsInt(r, n)
		k := readInt(r)
		if k > 100 {
			k = 100
		}
		writeInt(w, ans[t][k])
	}
}
```