For problem statement at 0-999/600-699/690-699/695/problemA.txt this is a correct solution, but verifier at 0-999/600-699/690-699/695/verifierA.go ends with case 1 failed: expected 0.865830693 0.452251252 0.681918055 got 0.8658307 0.4522513 0.6819181
input:
3 2
0.533981 0.177221 0.288798
exit status 1 can you fix the verifier? package main
import (
"fmt"
"math/bits"
)
func main() {
var n, k int
if _, err := fmt.Scan(&n, &k); err != nil {
return
}
p := make([]float64, n)
for i := 0; i < n; i++ {
fmt.Scan(&p[i])
}
dp := make([]float64, 1<<n)
dp[0] = 1.0
ans := make([]float64, n)
for mask := 0; mask < (1<<n); mask++ {
if dp[mask] == 0 {
continue
}
c := bits.OnesCount(uint(mask))
var sum_p float64
for i := 0; i < n; i++ {
if (mask & (1 << i)) != 0 {
sum_p += p[i]
}
}
if c == k || 1.0-sum_p < 1e-7 {
for i := 0; i < n; i++ {
if (mask & (1 << i)) != 0 {
ans[i] += dp[mask]
}
}
continue
}
for i := 0; i < n; i++ {
if (mask&(1<<i)) == 0 && p[i] > 0 {
dp[mask|(1<<i)] += dp[mask] * p[i] / (1.0 - sum_p)
}
}
}
for i := 0; i < n; i++ {
if i > 0 {
fmt.Print(" ")
}
fmt.Printf("%.7f", ans[i])
}
fmt.Println()
}