Cod sursa(job #147063)

Utilizator MarquiseMarquise Marquise Data 2 martie 2008 15:49:10
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <stdio.h>

#define NMAX 27

double m[NMAX][NMAX], v[NMAX];
int n, k;


int main()
{
	int i, j, c0, c1, d;
	freopen("dezastru.in", "r", stdin);
	freopen("dezastru.out", "w", stdout);
	scanf("%d %d", &n, &k);

	for ( i = 1; i <= n; i++)
		scanf("%lf", &v[i]);

	for ( i = 0; i <= n; i++)
	{
		m[i][0] = 1;
		for ( j = 1; j <= i && j <= k; j++)
			m[i][j] = m[i-1][j] + m[i-1][j-1] * v[i];

	}

	if ( k > n - k)
		d = n - k;
	else
		d = k;

	c0 = 1;
	for ( i = 1; i <= d; i++)
	{
		c1 = (long long)( n - i + 1) * c0 / i;
		c0 = c1;
	}

	printf("%lf\n", m[n][k] / c0);


	return 0;
}