Cod sursa(job #559949)

Utilizator krysstynelBojor Fineas Cristian krysstynel Data 18 martie 2011 11:05:12
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<fstream>
using namespace std;
ifstream fi("dezastru.in");
ofstream fo("dezastru.out");

int sol[30],n,used[30],k,cate;
double a[30],s=0;

void calc()
{
	double p=1;
	
	
	for(int i=1; i<=n; i++)
	{
		if(sol[i])
			p=p*a[i];
	}
	
	p=(double)p/cate;
	
	s+=(p*2);
}

bool valid()
{
	int l=0;

	for(int i=1; i<=n; i++)
		if(sol[i])
			l++;

	if(l==k)
		return 1;

	return 0;
}

void back(int pas)
{
	if(pas>n)
	{
		if(valid())
		
		calc();
		return;
		
		
	}

	
	sol[pas]=1;

	back(pas+1);

	sol[pas]=0;

	back(pas+1);
}

int main()
{
	fi>>n>>k;
	
	cate=1;
	
	for(int i=1; i<=n; i++)
	{
		fi>>a[i];
		cate=cate*i;
	}

	back(1);
	
	fo<<s;

	fi.close();
	fo.close();

	return 0;
}