For problem statement at 1000-1999/1300-1399/1350-1359/1355/problemE.txt this is a correct solution, but verifier at 1000-1999/1300-1399/1350-1359/1355/verifierE.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
nextInt := func() int64 {
for idx < len(data) {
c := data[idx]
if c > ' ' {
break
}
idx++
}
var n int64
for idx < len(data) {
c := data[idx]
if c < '0' || c > '9' {
break
}
n = n*10 + int64(c-'0')
idx++
}
return n
}
n := int(nextInt())
a := nextInt()
r := nextInt()
m := nextInt()
h := make([]int64, n)
var maxH int64
for i := 0; i < n; i++ {
h[i] = nextInt()
if h[i] > maxH {
maxH = h[i]
}
}
moveCost := m
if a+r < moveCost {
moveCost = a + r
}
calc := func(x int64) int64 {
var need, extra int64
for _, v := range h {
if v < x {
need += x - v
} else {
extra += v - x
}
}
moved := need
if extra < moved {
moved = extra
}
return moved*moveCost + (need-moved)*a + (extra-moved)*r
}
l, rr := int64(0), maxH
for l < rr {
mid := (l + rr) / 2
if calc(mid) <= calc(mid+1) {
rr = mid
} else {
l = mid + 1
}
}
w := bufio.NewWriter(os.Stdout)
fmt.Fprint(w, calc(l))
w.Flush()
}