For problem statement at 0-999/600-699/600-609/601/problemC.txt this is a correct solution, but verifier at 0-999/600-699/600-609/601/verifierC.go ends with All tests passed can you fix the verifier? package main
import (
"fmt"
)
func main() {
var n, m int
if _, err := fmt.Scan(&n, &m); err != nil {
return
}
x := make([]int, n)
S := 0
for i := 0; i < n; i++ {
fmt.Scan(&x[i])
S += x[i]
}
if m == 1 {
fmt.Printf("%.15f\n", 1.0)
return
}
maxSum := 0
dp := make([]float64, 1)
dp[0] = 1.0
for i := 0; i < n; i++ {
newMaxSum := maxSum + m
newDp := make([]float64, newMaxSum+1)
sumDp := 0.0
for s := 1; s <= newMaxSum; s++ {
if s-1 <= maxSum {
sumDp += dp[s-1]
}
if s-1-m >= 0 && s-1-m <= maxSum {
sumDp -= dp[s-1-m]
}
if sumDp < 0 {
sumDp = 0
}
val := sumDp
if s-x[i] >= 0 && s-x[i] <= maxSum {
val -= dp[s-x[i]]
}
if val < 0 {
val = 0
}
newDp[s] = val / float64(m-1)
}
dp = newDp
maxSum = newMaxSum
}
ans := 0.0
for s := 1; s < S; s++ {
if s <= maxSum {
ans += dp[s]
}
}
fmt.Printf("%.15f\n", 1.0+float64(m-1)*ans)
}