For problem statement at 1000-1999/1500-1599/1570-1579/1575/problemL.txt this is a correct solution, but verifier at 1000-1999/1500-1599/1570-1579/1575/verifierL.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"sort"
)
type Pair struct {
a int
b int
}
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var n int
if _, err := fmt.Fscan(in, &n); err != nil {
return
}
pairs := make([]Pair, 0, n)
for i := 1; i <= n; i++ {
var ai int
fmt.Fscan(in, &ai)
if i >= ai {
pairs = append(pairs, Pair{a: ai, b: i - ai})
}
}
sort.Slice(pairs, func(i, j int) bool {
if pairs[i].a != pairs[j].a {
return pairs[i].a < pairs[j].a
}
return pairs[i].b > pairs[j].b
})
tails := make([]int, 0, len(pairs))
for _, p := range pairs {
x := p.b
if len(tails) == 0 || x >= tails[len(tails)-1] {
tails = append(tails, x)
} else {
pos := sort.Search(len(tails), func(i int) bool { return tails[i] > x })
tails[pos] = x
}
}
fmt.Fprintln(out, len(tails))
}