For problem statement at 1000-1999/1000-1099/1090-1099/1091/problemF.txt this is a correct solution, but verifier at 1000-1999/1000-1099/1090-1099/1091/verifierF.go ends with All tests passed can you fix the verifier? package main
import (
"fmt"
"io"
"os"
)
func main() {
b, err := io.ReadAll(os.Stdin)
if err != nil {
return
}
var n int
idx := 0
for idx < len(b) && b[idx] <= ' ' {
idx++
}
for idx < len(b) && b[idx] > ' ' {
n = n*10 + int(b[idx]-'0')
idx++
}
lengths := make([]int64, n)
for i := 0; i < n; i++ {
for idx < len(b) && b[idx] <= ' ' {
idx++
}
var l int64
for idx < len(b) && b[idx] > ' ' {
l = l*10 + int64(b[idx]-'0')
idx++
}
lengths[i] = l
}
types := make([]byte, n)
for i := 0; i < n; i++ {
for idx < len(b) && b[idx] <= ' ' {
idx++
}
if idx < len(b) {
types[i] = b[idx]
idx++
}
}
var opt1_cap int64 = 0
var opt2_cap int64 = 0
var seen_water bool = false
var total_time int64 = 0
var stamina int64 = 0
for i := 0; i < n; i++ {
l := lengths[i]
t := types[i]
total_time += l
stamina -= l
if t == 'W' {
opt1_cap += 2 * l
seen_water = true
} else if t == 'G' {
opt2_cap += 2 * l
}
if stamina < 0 {
req := -stamina
if req > 0 && opt1_cap > 0 {
take := req
if take > opt1_cap {
take = opt1_cap
}
opt1_cap -= take
total_time += take * 1
stamina += take
req -= take
}
if req > 0 && opt2_cap > 0 {
take := req
if take > opt2_cap {
take = opt2_cap
}
opt2_cap -= take
total_time += take * 2
stamina += take
req -= take
}
if req > 0 {
if seen_water {
total_time += req * 3
stamina += req
req = 0
} else {
total_time += req * 5
stamina += req
req = 0
}
}
}
}
fmt.Println(total_time)
}