Pagini recente » Cod sursa (job #1070449) | Cod sursa (job #812208) | Monitorul de evaluare | Cod sursa (job #2444988) | Cod sursa (job #1741859)
#include <fstream>
#include <cmath>
#include <vector>
#include <iomanip>
#include <queue>
#include <cstring>
#include <algorithm>
#include <queue>
#include <unordered_set>
#include <set>
#include <map>
#include <stack>
using namespace std;
ifstream cin("dezastru.in");
ofstream cout("dezastru.out");
const int MAXN = 26;
double dp[1 + MAXN][1 + MAXN], v[1 + MAXN];
int combinations[1 + MAXN][1 + MAXN];
int main() {
int n, k;
cin >> n >> k;
for (int i = 1; i <= n; i++)
cin >> v[i];
dp[0][0] = 1;
for (int i = 1; i <= n; i++) {
dp[i][0] = 1;
for (int j = 1; j <= i; j++)
dp[i][j] = dp[i - 1][j - 1] * v[i] + dp[i - 1][j];
}
combinations[0][0] = 1;
for (int i = 1; i <= n; i++) {
combinations[i][0] = 1;
for (int j = 1; j <= i; j++)
combinations[i][j] = combinations[i - 1][j - 1] + combinations[i - 1][j];
}
double answer = dp[n][k] / (double) combinations[n][k];
cout << fixed << setprecision(6) << answer;
return 0;
}