Mai intai trebuie sa te autentifici.

Cod sursa(job #421954)

Utilizator dornescuvladVlad Eugen Dornescu dornescuvlad Data 21 martie 2010 21:30:52
Problema Dezastru Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<iostream>
#include<fstream>
#include<iomanip.h>

using namespace std;

ifstream fin("dezastru.in");
ofstream fout("dezastru.out");

int v[45],k,n,ct,combinari,comb;
double p[50],prod,s;

void Prelucreaza()
{
	prod = 1;
	ct ++;
	for(int i=1;i<=k;i++)
		prod*=p[v[i]];
	s+=prod;
}

void Genereaza(int pas)
{	
	if(ct<comb)
	{

		if(pas == k+1)
			Prelucreaza();
		else
			for(int i=v[pas-1]+1; i<=n-k+pas; i++)
			{
				v[pas]=i;
				Genereaza(pas+1);
			}
	}
}


int main()

{	
	int i;
	int fact=1,fact2=1,fact3=1;
	fin>>n>>k;
	for(i=1;i<=n;i++)
		fin>>p[i];
	for(i=1;i<=n;i++)
		fact*=i;
	for(i=1;i<=k;i++)
		fact2*=i;
	for(i=1;i<=n-k;i++)
		fact3*=i;
	comb=fact/(fact2*fact3);
	Genereaza(1);
	fout<<fixed;
	fout<<setprecision(6);
	fout<<s/ct;
	return 0;
}