For problem statement at 0-999/900-999/920-929/926/problemH.txt this is a correct solution, but verifier at 0-999/900-999/920-929/926/verifierH.go ends with all tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"sort"
)
func prefix(a []int) []int64 {
sort.Slice(a, func(i, j int) bool { return a[i] > a[j] })
p := make([]int64, len(a)+1)
for i, v := range a {
p[i+1] = p[i] + int64(v)
}
return p
}
func bestPair(po, px []int64, k int) int64 {
lo := 1
if k-len(px)+1 > lo {
lo = k - len(px)
}
hi := k - 1
if len(po) - 1 < hi {
hi = len(po) - 1
}
if lo > hi {
return -1
}
var ans int64 = -1
for x := lo; x <= hi; x++ {
y := k - x
if y >= 1 && y < len(px) {
s := po[x] + px[y]
if s > ans {
ans = s
}
}
}
return ans
}
func main() {
in := bufio.NewReaderSize(os.Stdin, 1<<20)
var n, k int
fmt.Fscan(in, &n, &k)
b := make([]int, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &b[i])
}
var c string
fmt.Fscan(in, &c)
var w, o, r []int
for i := 0; i < n; i++ {
switch c[i] {
case 'W':
w = append(w, b[i])
case 'O':
o = append(o, b[i])
case 'R':
r = append(r, b[i])
}
}
pw := prefix(w)
po := prefix(o)
pr := prefix(r)
ans1 := bestPair(po, pw, k)
ans2 := bestPair(po, pr, k)
ans := ans1
if ans2 > ans {
ans = ans2
}
fmt.Println(ans)
}