Cod sursa(job #741638)

Utilizator NicuCJNicu B. NicuCJ Data 26 aprilie 2012 17:13:06
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
using namespace std;
int x[100], n, m;
double prob[40], probp[11414], probfin=0;
int contor=0;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
bool ok()
{
	int i, j;
	for(i=1; i<m; i++)
	{
		for(j=i+1; j<=m; j++)
		{
			if(x[i]==x[j])
				return false;
		}
	}
	return true;
}
void back(int k)
{
	int i, j;
	for(i=1; i<=n; i++)
	{
		x[k]=i;
		if(k==m)
		{
			if(ok())
			{
				probp[contor]=1;
				for(j=1; j<=m; j++)
				{
					probp[contor]*=prob[x[j]];
				}
				contor++;
			}
		}
		else
			back(k+1);
	}
}
int main()
{
	f>>n>>m;
	int i;
	for(i=1; i<=n; i++)
	{
		f>>prob[i];
	}
	back(1);
	for(i=0; i<contor; i++)
	{
		probp[i]/=contor;
		probfin+=probp[i];
	}
	g.precision(6);
	g<<fixed<<probfin;
}