Cod sursa(job #296404)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 4 aprilie 2009 19:00:43
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Star Trek Marime 0.65 kb
#include <cstdio>
#define maxN 32

double P[maxN], C[maxN][maxN];
int N, K, Nr[maxN][maxN];

int main () {
        double Sum = 1;
        int i, j;

	freopen("dezastru.in", "r", stdin);
	freopen("dezastru.out", "w", stdout);

	scanf("%d%d", &N, &K);

	for (i = 1; i <= N; ++ i) {
		scanf("%lf", &P[i]);
		Sum = Sum * P[i];
		C[i][0] = 1.00;
		Nr[i][0] = 1;
	}

	if (N == K) {
		printf("%.6lf\n", Sum);
		return 0;
	}
 	
	C[0][0] = 1.00; Nr[0][0] = 1;
	for (i = 1; i <= N; ++ i)
		for (j = 1; j <= i; ++ j) {
			Nr[i][j] = Nr[i - 1][j] + Nr[i - 1][j - 1];
			C[i][j] = C[i - 1][j] + C[i - 1][j - 1] * P[i];
		}

	printf("%.6lf\n", C[N][K] / (Nr[N][K] * 1.00));
}