Cod sursa(job #782116)

Utilizator IliesiDanielDaniel IliesiDaniel Data 25 august 2012 22:52:56
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <iomanip>
#include <fstream>

using namespace std;

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

int st[30], N, K, nr, i, j;
float v[30], S, prod;

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

	return 1;
}

void back(int k)
{
	int i;

	for(i=1; i<=N; i++)
	{
		st[k]=i;
		if(valid(k))	if(k==K){
									prod=1;

									for(j=1; j<=k; j++)
										prod*=v[st[j]];

									S+=prod/nr;
								}
						else 	back(k+1);
	}
}

int main()
{
	fin>>N>>K;

	nr=1;

	for(i=1; i<=N; i++)
	{
		nr*=i;
		fin>>v[i];
	}

	back(1);

	fout<<setprecision(6)<<S;

	fin.close();
	fout.close();
	return 0;
}