For problem statement at 0-999/700-799/730-739/734/problemF.txt this is a correct solution, but verifier at 0-999/700-799/730-739/734/verifierF.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"io"
"os"
"strconv"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
nextInt := func() int64 {
for idx < len(data) && data[idx] <= ' ' {
idx++
}
var 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())
b := make([]int64, n)
d := make([]int64, n)
for i := 0; i < n; i++ {
b[i] = nextInt()
}
var total int64
for i := 0; i < n; i++ {
c := nextInt()
d[i] = b[i] + c
total += d[i]
}
w := bufio.NewWriterSize(os.Stdout, 1<<20)
defer w.Flush()
denom := int64(2 * n)
if total%denom != 0 {
w.WriteString("-1")
return
}
S := total / denom
a := make([]int64, n)
var sumA int64
nn := int64(n)
ok := true
for i := 0; i < n; i++ {
x := d[i] - S
if x < 0 || x%nn != 0 {
ok = false
break
}
a[i] = x / nn
sumA += a[i]
}
if ok && sumA != S {
ok = false
}
const B = 31
if ok {
cnt := make([]int64, B)
for i := 0; i < n; i++ {
v := a[i]
for k := 0; k < B; k++ {
if v&(int64(1)<<k) != 0 {
cnt[k]++
}
}
}
contrib := make([]int64, B)
for k := 0; k < B; k++ {
contrib[k] = cnt[k] * (int64(1) << k)
}
for i := 0; i < n; i++ {
v := a[i]
var s int64
for k := 0; k < B; k++ {
if v&(int64(1)<<k) != 0 {
s += contrib[k]
}
}
if s != b[i] {
ok = false
break
}
}
}
if !ok {
w.WriteString("-1")
return
}
for i := 0; i < n; i++ {
if i > 0 {
w.WriteByte(' ')
}
w.WriteString(strconv.FormatInt(a[i], 10))
}
}