For problem statement at 1000-1999/1600-1699/1640-1649/1641/problemA.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1640-1649/1641/verifierA.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"io"
"os"
"sort"
)
type Pair struct {
core int64
exp int
}
func nextInt(data []byte, idx *int) int64 {
n := len(data)
for *idx < n && data[*idx] <= ' ' {
*idx++
}
var v int64
for *idx < n && data[*idx] > ' ' {
v = v*10 + int64(data[*idx]-'0')
*idx++
}
return v
}
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
t := int(nextInt(data, &idx))
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
var pairs []Pair
for ; t > 0; t-- {
n := int(nextInt(data, &idx))
x := nextInt(data, &idx)
if cap(pairs) < n {
pairs = make([]Pair, n)
} else {
pairs = pairs[:n]
}
for i := 0; i < n; i++ {
v := nextInt(data, &idx)
e := 0
for v%x == 0 {
v /= x
e++
}
pairs[i] = Pair{core: v, exp: e}
}
sort.Slice(pairs, func(i, j int) bool {
if pairs[i].core == pairs[j].core {
return pairs[i].exp < pairs[j].exp
}
return pairs[i].core < pairs[j].core
})
var ans int64
i := 0
for i < n {
core := pairs[i].core
prevExp := -1 << 30
var prev int64
for i < n && pairs[i].core == core {
exp := pairs[i].exp
var cnt int64
for i < n && pairs[i].core == core && pairs[i].exp == exp {
cnt++
i++
}
if exp > prevExp+1 {
ans += prev
prev = 0
}
if cnt >= prev {
prev = cnt - prev
} else {
ans += prev - cnt
prev = 0
}
prevExp = exp
}
ans += prev
}
fmt.Fprintln(out, ans)
}
}