For problem statement at 0-999/400-499/460-469/466/problemC.txt this is a correct solution, but verifier at 0-999/400-499/460-469/466/verifierC.go ends with All 100 tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
if len(data) == 0 {
return
}
idx := 0
nextInt := func() int64 {
for idx < len(data) && (data[idx] == ' ' || data[idx] == '\n' || data[idx] == '\r' || data[idx] == '\t') {
idx++
}
sign := int64(1)
if data[idx] == '-' {
sign = -1
idx++
}
var val int64
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
val = val*10 + int64(data[idx]-'0')
idx++
}
return val * sign
}
n := int(nextInt())
if n < 3 {
fmt.Print(0)
return
}
prefix := make([]int64, n+1)
for i := 1; i <= n; i++ {
prefix[i] = prefix[i-1] + nextInt()
}
total := prefix[n]
if total%3 != 0 {
fmt.Print(0)
return
}
t := total / 3
cnt := make([]int64, n+2)
for i := n - 1; i >= 1; i-- {
cnt[i] = cnt[i+1]
if prefix[i] == 2*t {
cnt[i]++
}
}
var ans int64
for i := 1; i <= n-2; i++ {
if prefix[i] == t {
ans += cnt[i+1]
}
}
w := bufio.NewWriter(os.Stdout)
fmt.Fprint(w, ans)
w.Flush()
}