For problem statement at 1000-1999/1100-1199/1110-1119/1111/problemC.txt this is a correct solution, but verifier at 1000-1999/1100-1199/1110-1119/1111/verifierC.go ends with All 100 tests passed. can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"sort"
)
var (
n, k int
A, B int64
a []int64
)
func solve(start, end int64, lIdx, rIdx int) int64 {
na := int64(rIdx - lIdx)
l := end - start + 1
if na == 0 {
return A
}
burnCost := B * na * l
if l == 1 {
return burnCost
}
mid := start + (end-start)/2
midIdx := lIdx + sort.Search(rIdx-lIdx, func(i int) bool { return a[lIdx+i] > mid })
splitCost := solve(start, mid, lIdx, midIdx) + solve(mid+1, end, midIdx, rIdx)
if burnCost < splitCost {
return burnCost
}
return splitCost
}
func main() {
in := bufio.NewReader(os.Stdin)
if _, err := fmt.Fscan(in, &n, &k, &A, &B); err != nil {
return
}
a = make([]int64, k)
for i := 0; i < k; i++ {
fmt.Fscan(in, &a[i])
}
sort.Slice(a, func(i, j int) bool { return a[i] < a[j] })
fmt.Println(solve(1, int64(1)<<n, 0, k))
}