← Home
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? ```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var n, k int
	fmt.Fscan(reader, &n, &k)

	b := make([]int, n)
	for i := 0; i < n; i++ {
		fmt.Fscan(reader, &b[i])
	}

	var c string
	fmt.Fscan(reader, &c)

	w := []int{}
	o := []int{}
	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])
		}
	}

	sort.Slice(w, func(i, j int) bool { return w[i] > w[j] })
	sort.Slice(o, func(i, j int) bool { return o[i] > o[j] })
	sort.Slice(r, func(i, j int) bool { return r[i] > r[j] })

	pw := make([]int, len(w)+1)
	for i := 1; i <= len(w); i++ {
		pw[i] = pw[i-1] + w[i-1]
	}

	po := make([]int, len(o)+1)
	for i := 1; i <= len(o); i++ {
		po[i] = po[i-1] + o[i-1]
	}

	pr := make([]int, len(r)+1)
	for i := 1; i <= len(r); i++ {
		pr[i] = pr[i-1] + r[i-1]
	}

	ans := -1

	low := max(1, k-len(o))
	high := min(k-1, len(w))
	for i := low; i <= high; i++ {
		val := pw[i] + po[k-i]
		if val > ans {
			ans = val
		}
	}

	low = max(1, k-len(o))
	high = min(k-1, len(r))
	for i := low; i <= high; i++ {
		val := pr[i] + po[k-i]
		if val > ans {
			ans = val
		}
	}

	fmt.Fprintln(writer, ans)
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}

func min(a, b int) int {
	if a < b {
		return a
	}
	return b
}
```