Cod sursa(job #1451080)

Utilizator Al3ks1002Alex Cociorva Al3ks1002 Data 15 iunie 2015 23:15:37
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("dezastru.in");
ofstream fout("dezastru.out");

#define ll long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define pll pair<ll, ll>
#define all(x) (x).begin(), (x).end()
#define fi first
#define se second

const int nmax = 30;

int n, k, i, j;
double p[nmax];
double dp[nmax][nmax];
double comb[nmax][nmax];

int main() {
	fin >> n >> k;

	for (i = 1; i <= n; i++)
		fin >> p[i];

	for (i = 0; i <= n; i++)
		dp[i][0] = 1.0;

	for (i = 1; i <= n; i++)
		for (j = 1; j <= i && j <= k; j++)
			dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] * p[i];

	for (i = 0; i <= n; i++)
		comb[i][0] = 1.0;

	for (i = 1; i <= n; i++)
		for (j = 1; j <= i; j++)
			comb[i][j] = comb[i - 1][j] + comb[i - 1][j - 1];

	fout << dp[n][k] / comb[n][k];

	return 0;
}