For problem statement at 0-999/500-599/540-549/542/problemF.txt this is a correct solution, but verifier at 0-999/500-599/540-549/542/verifierF.go ends with All 44 tests passed. can you fix the verifier? package main
import (
"bufio"
"fmt"
"io"
"os"
"sort"
)
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()
T := nextInt()
groups := make([][]int, T+1)
for i := 0; i < n; i++ {
t := nextInt()
q := nextInt()
groups[t] = append(groups[t], q)
}
prefixCnt := make([]int, T+1)
prefs := make([][]int, T+1)
for t := 1; t <= T; t++ {
prefixCnt[t] = prefixCnt[t-1] + len(groups[t])
sort.Slice(groups[t], func(i, j int) bool {
return groups[t][i] > groups[t][j]
})
pref := make([]int, len(groups[t])+1)
for i, v := range groups[t] {
pref[i+1] = pref[i] + v
}
prefs[t] = pref
}
dp := make([]int, n+1)
for i := range dp {
dp[i] = -1
}
dp[1] = 0
for t := T; t >= 1; t-- {
capNext := 0
if t > 1 {
capNext = prefixCnt[t-1]
}
ndp := make([]int, capNext+1)
for i := range ndp {
ndp[i] = -1
}
pref := prefs[t]
m := len(pref) - 1
for c := 0; c < len(dp); c++ {
if dp[c] < 0 {
continue
}
limit := m
if c < limit {
limit = c
}
for k := 0; k <= limit; k++ {
nc := 0
if t > 1 {
nc = 2 * (c - k)
if nc > capNext {
nc = capNext
}
}
val := dp[c] + pref[k]
if val > ndp[nc] {
ndp[nc] = val
}
}
}
dp = ndp
}
out := bufio.NewWriter(os.Stdout)
fmt.Fprintln(out, dp[0])
out.Flush()
}