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"
"fmt"
"os"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
if !scanner.Scan() {
return
}
n, _ := strconv.Atoi(scanner.Text())
b := make([]int64, n)
for i := 0; i < n; i++ {
scanner.Scan()
b[i], _ = strconv.ParseInt(scanner.Text(), 10, 64)
}
c := make([]int64, n)
for i := 0; i < n; i++ {
scanner.Scan()
c[i], _ = strconv.ParseInt(scanner.Text(), 10, 64)
}
var sumBC int64 = 0
for i := 0; i < n; i++ {
sumBC += b[i] + c[i]
}
if sumBC%(2*int64(n)) != 0 {
fmt.Println("-1")
return
}
S := sumBC / (2 * int64(n))
a := make([]int64, n)
for i := 0; i < n; i++ {
val := b[i] + c[i] - S
if val < 0 || val%int64(n) != 0 {
fmt.Println("-1")
return
}
a[i] = val / int64(n)
}
counts := make([]int64, 31)
for i := 0; i < n; i++ {
for k := 0; k < 31; k++ {
if (a[i]>>k)&1 == 1 {
counts[k]++
}
}
}
for i := 0; i < n; i++ {
var expectedB int64 = 0
for k := 0; k < 31; k++ {
if (a[i]>>k)&1 == 1 {
expectedB += (int64(1) << k) * counts[k]
}
}
if expectedB != b[i] {
fmt.Println("-1")
return
}
}
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
for i := 0; i < n; i++ {
if i > 0 {
out.WriteString(" ")
}
out.WriteString(strconv.FormatInt(a[i], 10))
}
out.WriteString("\n")
}