Cod sursa(job #339146)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 8 august 2009 14:45:32
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
#define N 1<<5
int n,k;
double v[N];
double a[N][N];
long long nr=1,nr2=1;
void read()
{
	scanf("%d%d",&n,&k);
	int i;
	for (i=1; i<=n; i++)
		scanf("%lf",&v[i]);
}
void solve()
{
	int i,j;
	for (i=0; i<=n; i++)
		a[i][0]=1;
	for (i=1; i<=n; i++)
		for (j=1; j<=i; j++)
			a[i][j]=a[i-1][j]+a[i-1][j-1]*v[i];
	if (k>=n-k)
	{
		for (i=k+1; i<=n; i++)
			nr=(long long)nr*i;
		for (i=2; i<=n-k; i++)
			nr2=(long long)nr2*i;
		nr/=nr2;
	}
	else
	{
		for (i=n-k+1; i<=n; i++)
			nr=(long long)nr*i;
		for (i=2; i<=k; i++)
			nr2=(long long)nr2*i;
		nr/=nr2;
	}
	printf("%lf",a[n][k]/nr);
}
int main()
{
	freopen("dezastru.in","r",stdin);
	freopen("dezastru.out","w",stdout);
	read();
	solve();
	return 0;
}