For problem statement at 0-999/600-699/610-619/616/problemD.txt this is a correct solution, but verifier at 0-999/600-699/610-619/616/verifierD.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"io"
"os"
"strconv"
)
type FastReader struct {
r io.Reader
buf []byte
i int
n int
}
func NewFastReader(r io.Reader) *FastReader {
return &FastReader{r: r, buf: make([]byte, 1<<20)}
}
func (fr *FastReader) read() int {
if fr.i >= fr.n {
var err error
fr.n, err = fr.r.Read(fr.buf)
fr.i = 0
if err != nil || fr.n == 0 {
return -1
}
}
b := fr.buf[fr.i]
fr.i++
return int(b)
}
func (fr *FastReader) nextInt() int {
b := fr.read()
for b != -1 && b <= ' ' {
b = fr.read()
}
sign := 1
if b == '-' {
sign = -1
b = fr.read()
}
val := 0
for b > ' ' {
val = val*10 + (b - '0')
b = fr.read()
}
return sign * val
}
func main() {
fr := NewFastReader(os.Stdin)
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
n := fr.nextInt()
k := fr.nextInt()
a := make([]int, n)
for i := 0; i < n; i++ {
a[i] = fr.nextInt()
}
maxA := 1000000
cnt := make([]int, maxA+2)
l := 0
bestL, bestR := 0, 0
bestLen := 0
distinct := 0
for r := 0; r < n; r++ {
v := a[r]
if cnt[v] == 0 {
distinct++
}
cnt[v]++
for distinct > k {
vv := a[l]
cnt[vv]--
if cnt[vv] == 0 {
distinct--
}
l++
}
if r-l+1 > bestLen {
bestLen = r - l + 1
bestL = l
bestR = r
}
}
out.WriteString(strconv.Itoa(bestL + 1))
out.WriteByte(' ')
out.WriteString(strconv.Itoa(bestR + 1))
out.WriteByte('\n')
}