For problem statement at 2000-2999/2000-2099/2070-2079/2075/problemB.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2070-2079/2075/verifierB.go ends with Accepted (46 test cases). can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"sort"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var t int
if _, err := fmt.Fscan(in, &t); err != nil {
return
}
for ; t > 0; t-- {
var n, k int
fmt.Fscan(in, &n, &k)
a := make([]int64, n)
for i := 0; i < n; i++ {
var x int64
fmt.Fscan(in, &x)
a[i] = x
}
// Fallback heuristic (may not be optimal for all cases due to complexity):
// Take k largest as initial, last as largest among remaining, ensure within bounds.
type pair struct {
val int64
idx int
}
ps := make([]pair, n)
for i := 0; i < n; i++ {
ps[i] = pair{a[i], i}
}
sort.Slice(ps, func(i, j int) bool {
if ps[i].val == ps[j].val {
return ps[i].idx < ps[j].idx
}
return ps[i].val > ps[j].val
})
sum := int64(0)
chosen := make([]bool, n)
for i := 0; i < k; i++ {
sum += ps[i].val
chosen[ps[i].idx] = true
}
last := int64(0)
for i := 0; i < n; i++ {
if !chosen[i] && a[i] > last {
last = a[i]
}
}
fmt.Fprintln(out, sum+last)
}
}