For problem statement at 0-999/200-299/220-229/220/problemB.txt this is a correct solution, but verifier at 0-999/200-299/220-229/220/verifierB.go ends with All 100 tests passed can you fix the verifier? package main
import (
"bufio"
"io"
"math"
"os"
"sort"
"strconv"
)
type Query struct {
l, r int
idx int
block int
}
func main() {
data, _ := io.ReadAll(os.Stdin)
p := 0
nextInt := func() int {
for p < len(data) && (data[p] < '0' || data[p] > '9') {
p++
}
v := 0
for p < len(data) && data[p] >= '0' && data[p] <= '9' {
v = v*10 + int(data[p]-'0')
p++
}
return v
}
n := nextInt()
m := nextInt()
a := make([]int, n)
for i := 0; i < n; i++ {
a[i] = nextInt()
}
blockSize := int(math.Sqrt(float64(n))) + 1
qs := make([]Query, m)
for i := 0; i < m; i++ {
l := nextInt() - 1
r := nextInt() - 1
qs[i] = Query{l: l, r: r, idx: i, block: l / blockSize}
}
sort.Slice(qs, func(i, j int) bool {
if qs[i].block != qs[j].block {
return qs[i].block < qs[j].block
}
if qs[i].block&1 == 1 {
return qs[i].r > qs[j].r
}
return qs[i].r < qs[j].r
})
freq := make([]int, n+1)
ans := make([]int, m)
cur := 0
add := func(x int) {
if x > n {
return
}
if freq[x] == x {
cur--
}
freq[x]++
if freq[x] == x {
cur++
}
}
remove := func(x int) {
if x > n {
return
}
if freq[x] == x {
cur--
}
freq[x]--
if freq[x] == x {
cur++
}
}
l, r := 0, -1
for _, q := range qs {
for l > q.l {
l--
add(a[l])
}
for r < q.r {
r++
add(a[r])
}
for l < q.l {
remove(a[l])
l++
}
for r > q.r {
remove(a[r])
r--
}
ans[q.idx] = cur
}
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
buf := make([]byte, 0, m*4)
for i := 0; i < m; i++ {
buf = strconv.AppendInt(buf, int64(ans[i]), 10)
buf = append(buf, '\n')
}
out.Write(buf)
}