← Home
For problem statement at 1000-1999/1500-1599/1590-1599/1593/problemG.txt this is a correct solution, but verifier at 1000-1999/1500-1599/1590-1599/1593/verifierG.go ends with All tests passed can you fix the verifier? ```go
package main

import (
	"bufio"
	"os"
)

func parseInt(b []byte) int {
	res := 0
	for _, ch := range b {
		res = res*10 + int(ch-'0')
	}
	return res
}

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() {
	scanner := bufio.NewScanner(os.Stdin)
	const maxCapacity = 1024 * 1024 * 10
	buf := make([]byte, maxCapacity)
	scanner.Buffer(buf, maxCapacity)
	scanner.Split(bufio.ScanWords)

	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	if !scanner.Scan() {
		return
	}
	t := parseInt(scanner.Bytes())

	for i := 0; i < t; i++ {
		scanner.Scan()
		s := scanner.Bytes()

		n := len(s)
		prefOdd := make([]int, n+1)
		prefEven := make([]int, n+1)

		for j := 0; j < n; j++ {
			prefOdd[j+1] = prefOdd[j]
			prefEven[j+1] = prefEven[j]
			if s[j] == '[' || s[j] == ']' {
				if (j & 1) == 0 {
					prefOdd[j+1]++
				} else {
					prefEven[j+1]++
				}
			}
		}

		scanner.Scan()
		q := parseInt(scanner.Bytes())

		for j := 0; j < q; j++ {
			scanner.Scan()
			l := parseInt(scanner.Bytes())
			scanner.Scan()
			r := parseInt(scanner.Bytes())

			oddCount := prefOdd[r] - prefOdd[l-1]
			evenCount := prefEven[r] - prefEven[l-1]

			diff := oddCount - evenCount
			if diff < 0 {
				diff = -diff
			}

			writeInt(writer, diff)
		}
	}
}
```