For problem statement at 2000-2999/2000-2099/2040-2049/2044/problemF.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2040-2049/2044/verifierF.go ends with All 202 tests passed can you fix the verifier? package main
import (
"fmt"
"io"
"os"
"strings"
)
func main() {
buf, _ := io.ReadAll(os.Stdin)
var pos int
nextInt := func() int64 {
for pos < len(buf) && buf[pos] <= ' ' {
pos++
}
if pos >= len(buf) {
return 0
}
sign := int64(1)
if buf[pos] == '-' {
sign = -1
pos++
}
res := int64(0)
for pos < len(buf) && buf[pos] > ' ' {
res = res*10 + int64(buf[pos]-'0')
pos++
}
return res * sign
}
n := int(nextInt())
if n == 0 {
return
}
m := int(nextInt())
q := int(nextInt())
a := make([]int64, n)
var sa int64
for i := 0; i < n; i++ {
a[i] = nextInt()
sa += a[i]
}
b := make([]int64, m)
var sb int64
for i := 0; i < m; i++ {
b[i] = nextInt()
sb += b[i]
}
hasA := make([]bool, 400005)
hasB := make([]bool, 400005)
for i := 0; i < n; i++ {
val := sa - a[i]
if val >= -200000 && val <= 200000 {
hasA[val+200000] = true
}
}
for i := 0; i < m; i++ {
val := sb - b[i]
if val >= -200000 && val <= 200000 {
hasB[val+200000] = true
}
}
check := func(v1, v2 int64) bool {
if v1 >= -200000 && v1 <= 200000 && v2 >= -200000 && v2 <= 200000 {
return hasA[v1+200000] && hasB[v2+200000]
}
return false
}
var out strings.Builder
for i := 0; i < q; i++ {
x := nextInt()
absX := x
if absX < 0 {
absX = -absX
}
found := false
for d := int64(1); d*d <= absX; d++ {
if absX%d == 0 {
p1 := d
p2 := x / d
if check(p1, p2) || check(p2, p1) || check(-p1, -p2) || check(-p2, -p1) {
found = true
break
}
}
}
if found {
out.WriteString("YES\n")
} else {
out.WriteString("NO\n")
}
}
fmt.Print(out.String())
}