For problem statement at 2000-2999/2000-2099/2040-2049/2045/problemJ.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2040-2049/2045/verifierJ.go ends with test 2 mismatch: expected 0 got 1
input:
5 2
0 7 13 22 24
12 10
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
)
type TrieNode struct {
child [2]int32
cnt int32
}
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var N, M int
fmt.Fscan(reader, &N, &M)
A := make([]int, N)
for i := 0; i < N; i++ {
fmt.Fscan(reader, &A[i])
}
X := make([]int, M)
for i := 0; i < M; i++ {
fmt.Fscan(reader, &X[i])
}
// min xor distance in A
sort.Ints(A)
D := -1
for i := 0; i < N-1; i++ {
xor := A[i] ^ A[i+1]
if D == -1 || xor < D {
D = xor
}
}
// count pairs in X with xor <= D
trie := make([]TrieNode, 1, M*30+1)
trie[0] = TrieNode{child: [2]int32{-1, -1}}
var ans int64 = 0
for _, x := range X {
// query
node := int32(0)
for b := 29; b >= 0; b-- {
if node == -1 {
break
}
xb := int32((x >> b) & 1)
db := int32((D >> b) & 1)
if db == 1 {
if c := trie[node].child[xb]; c != -1 {
ans += int64(trie[c].cnt)
}
node = trie[node].child[1-xb]
} else {
node = trie[node].child[xb]
}
}
if node != -1 {
ans += int64(trie[node].cnt)
}
// insert
node = 0
trie[node].cnt++
for b := 29; b >= 0; b-- {
xb := int32((x >> b) & 1)
if trie[node].child[xb] == -1 {
trie = append(trie, TrieNode{child: [2]int32{-1, -1}})
trie[node].child[xb] = int32(len(trie) - 1)
}
node = trie[node].child[xb]
trie[node].cnt++
}
}
fmt.Fprintln(writer, ans)
}
```