Cod sursa(job #479536)

Utilizator crushackPopescu Silviu crushack Data 24 august 2010 13:50:35
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>
#include <algorithm>
#include <time.h>
#define NMax 25
using namespace std;

const char IN[]   ="dezastru.in";
const char OUT[]  ="dezastru.out";
typedef long long ll;

int N,K,Nr;
float a[NMax+1];
float M[NMax+1][NMax+1];
double s;

void rez()
{
	int i,j;
	M[1][1]=a[1];
	for (i=0;i<=N;i++)
		M[i][0]=1;
	for (i=2;i<=N;i++)
		for (j=1;j<=K && j<=i;j++)
			M[i][j]= a[i]*M[i-1][j-1] + M[i-1][j];
	s=M[N][K];
}

ll comb(ll n,ll k)
{
	int i;
	ll x=1;
	for (i=1;i<=k;i++)
	{
		x= x*(n-i+1)/i;
	}
	return x;
}

void citire()
{
	int i;
	freopen(IN,"r",stdin);
	scanf("%d%d",&N,&K);
	for (i=1;i<=N;i++)
		scanf("%f",&a[i]);
	fclose(stdin);
}

void scriere()
{
	printf("%.2f\n",clock()/(float)CLOCKS_PER_SEC);
	freopen(OUT,"w",stdout);
	printf("%.6lf\n",s);
	fclose(stdout);
}

int main()
{
	citire();
	rez();
	s= s /(int)( comb(N,K));
	scriere();
	return 0;
}