1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import sys

def max_prob_to_pass(n, t, probabilities):
    dp = [0] * (n + 1)
    dp[0] = 1.0  # Zaczynamy z prawdopodobieństwem 1 dla 0 punktów
    
    for p in probabilities:
        next_dp = dp[:]
        for score in range(n - 1, -1, -1):
            next_dp[score + 1] += dp[score] * p  # Dodanie wyniku za poprawną odpowiedź
            next_dp[score] *= (1 - p)  # Utrata szansy przez pominięcie lub złą odp.
        dp = next_dp
    
    return sum(dp[t:])

if __name__ == "__main__":
    n, t = map(int, sys.stdin.readline().split())
    probabilities = [float(sys.stdin.readline().strip()) for _ in range(n)]
    
    result = max_prob_to_pass(n, t, probabilities)
    print(f"{result:.20f}")