Cod sursa(job #686508)

Utilizator dsfm_danielaasd mghd dsfm_daniel Data 21 februarie 2012 17:37:58
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
#include <iomanip>
using namespace std;

int st[26],factorial,n,K;
float suma,v[26];

int valid(int k)
{ 
	for(int i=1;i<=k-1;i++)
		if (st[i]==st[k])
			return 0;
	return 1;
}
 

void back(int k)
{
	float pr;
	for(int i=1;i<=n;i++)
	{
		pr=1;
		st[k]=i;
		if (valid(k))
		{	if(k==K)
			{
				for (int j=1;j<=k;j++)
					pr=pr*v[st[j]];
				suma=suma+pr/factorial;
			}
			else
				back(k+1);
		}
	}
}

int main (void)
{
	
	ifstream in("dezastru.in");
	ofstream out("dezastru.out");
	
	int i;
	suma=0;
	in>>n>>K;
	factorial=1;
	for (i=1;i<=n;i++)
	{
		factorial=factorial*i;
		in>>v[i];
	}
	back(1);
	out<<fixed<<setprecision(6)<<suma;
	in.close();
	out.close();
	return 0;
}