For problem statement at 1000-1999/1000-1099/1070-1079/1077/problemD.txt this is a correct solution, but verifier at 1000-1999/1000-1099/1070-1079/1077/verifierD.go ends with All tests passed can you fix the verifier? package main
import (
"bytes"
"io"
"os"
"strconv"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
readInt := func() int {
for idx < len(data) && (data[idx] < '0' || data[idx] > '9') {
idx++
}
val := 0
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
val = val*10 + int(data[idx]-'0')
idx++
}
return val
}
n := readInt()
k := readInt()
const maxA = 200000
freq := make([]int, maxA+1)
maxVal := 0
for i := 0; i < n; i++ {
x := readInt()
freq[x]++
if x > maxVal {
maxVal = x
}
}
can := func(m int) bool {
total := 0
for v := 1; v <= maxVal; v++ {
total += freq[v] / m
if total >= k {
return true
}
}
return false
}
lo, hi := 0, n/k+1
for hi-lo > 1 {
mid := (lo + hi) / 2
if can(mid) {
lo = mid
} else {
hi = mid
}
}
ans := make([]int, 0, k)
for v := 1; v <= maxVal && len(ans) < k; v++ {
cnt := freq[v] / lo
for cnt > 0 && len(ans) < k {
ans = append(ans, v)
cnt--
}
}
var out bytes.Buffer
for i, x := range ans {
if i > 0 {
out.WriteByte(' ')
}
out.WriteString(strconv.Itoa(x))
}
out.WriteByte('\n')
os.Stdout.Write(out.Bytes())
}