Pagini recente » Cod sursa (job #2981912) | Cod sursa (job #2059418) | Cod sursa (job #3267487) | Cod sursa (job #2534112) | Cod sursa (job #2174077)
#include <iostream>
#include <cstdio>
#define NMAX 30
using namespace std;
int N, K, pas[NMAX];
double prob[NMAX], dp[NMAX][NMAX];
void read() {
scanf("%d %d", &N, &K);
for(int i = 1; i <= N; ++i) {
scanf("%lf", &prob[i]);
}
}
int createPas() {
pas[0] = 1;
for(int i = 1; i <= N; ++i) {
for(int j = i; j >= 1; --j) {
pas[j] += pas[j - 1];
}
}
return pas[K];
}
void solve() {
for(int j = 0; j <= K; ++j) {
dp[0][j] = 0;
}
for(int i = 0; i <= N; ++i) {
dp[i][0] = 1;
}
for(int i = 1; i <= N; ++i) {
for(int j = 1; j <= K; ++j) {
dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] * prob[i];
}
}
}
int main()
{
freopen("dezastru.in", "r", stdin);
freopen("dezastru.out", "w", stdout);
read();
solve();
printf("%lf", dp[N][K] / createPas());
return 0;
}