For problem statement at 0-999/900-999/920-929/922/problemE.txt this is a correct solution, but verifier at 0-999/900-999/920-929/922/verifierE.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
type FastScanner struct {
r *bufio.Reader
}
func NewFastScanner() *FastScanner {
return &FastScanner{r: bufio.NewReaderSize(os.Stdin, 1<<20)}
}
func (fs *FastScanner) NextInt64() int64 {
var sign int64 = 1
var val int64
c, err := fs.r.ReadByte()
for (c < '0' || c > '9') && c != '-' {
c, err = fs.r.ReadByte()
if err != nil {
return 0
}
}
if c == '-' {
sign = -1
c, _ = fs.r.ReadByte()
}
for c >= '0' && c <= '9' {
val = val*10 + int64(c-'0')
c, err = fs.r.ReadByte()
if err != nil {
return sign * val
}
}
fs.r.UnreadByte()
return sign * val
}
func main() {
fs := NewFastScanner()
n := int(fs.NextInt64())
W := fs.NextInt64()
B := fs.NextInt64()
X := fs.NextInt64()
c := make([]int, n)
total := 0
for i := 0; i < n; i++ {
c[i] = int(fs.NextInt64())
total += c[i]
}
cost := make([]int64, n)
for i := 0; i < n; i++ {
cost[i] = fs.NextInt64()
}
const neg int64 = -1
dp := make([]int64, total+1)
for i := range dp {
dp[i] = neg
}
dp[0] = W
sum := 0
for i := 0; i < n; i++ {
ndp := make([]int64, total+1)
for j := range ndp {
ndp[j] = neg
}
for j := 0; j <= sum; j++ {
if dp[j] < 0 {
continue
}
maxK := c[i]
if cost[i] > 0 {
t := int(dp[j] / cost[i])
if t < maxK {
maxK = t
}
}
for k := 0; k <= maxK; k++ {
birds := j + k
rem := dp[j] - int64(k)*cost[i]
cap := W + int64(birds)*B
mana := rem + X
if mana > cap {
mana = cap
}
if mana > ndp[birds] {
ndp[birds] = mana
}
}
}
dp = ndp
sum += c[i]
}
ans := 0
for i := total; i >= 0; i-- {
if dp[i] >= 0 {
ans = i
break
}
}
fmt.Println(ans)
}