Cod sursa(job #782111)

Utilizator IliesiDanielDaniel IliesiDaniel Data 25 august 2012 22:48:06
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 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;
double v[30], S, prod[30];

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[++nr]=1;

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

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

	for(i=1; i<=N; i++)
		fin>>v[i];

	back(1);

	for(i=1; i<=nr; i++)
		S+=prod[i]/nr;

	fout<<setprecision(6)<<S;

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