Cod sursa(job #663305)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 18 ianuarie 2012 11:03:10
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<iostream>
#include<fstream>
#include<algorithm>
#include<iomanip>
using namespace std;
float s;
float p[30],a[26][26];
unsigned long long int fact,k,n,x[26];
/*
void lucru( void)
{
	int i;
		p=1;
		for(i=1;i<=k;i++)
			p=p*(a[x[i]]);			
		s=s+p;
		//fact++;
		
}
void comb(int poz)
{
	int i;
	for (i=x[poz-1]+1;i<=n;i++)
	{
		x[poz]=i;
		if (poz==k)
			lucru();
		else
			comb(poz+1);
	}
}
*/
int main(void)
{
	int i,j;
	
	fstream f("dezastru.in",ios::in),g("dezastru.out",ios::out);
	f>>n>>k;
	for (i=1;i<=n;i++)
	{
		f>>p[i];
		//x[i]=i;
	}
	fact=1;
	//for (i=1;i<=n;i++)
	//	fact*=i;
	
	for (i=n-k+1;i<=n;i++)
	{
		fact=(fact*(i))/(i-n+k);
	}
	for (i=0;i<=n;i++)
		a[i][0]=1;
	for (i=1;i<=n;i++)
		for (j=1;j<=k;j++)
			a[i][j]=a[i-1][j-1]*p[i]+a[i-1][j];
		
	//cout<<fact;
	g<<fixed<<setprecision(6)<<double(a[n][k]/fact);
}