Cod sursa(job #782123)

Utilizator IliesiDanielDaniel IliesiDaniel Data 25 august 2012 23:06:38
Problema Dezastru Scor 50
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], prod, S;

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)
								{
									++nr;
									prod=1;

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

									S+=prod;
								}
						else 	if(k<K)		back(k+1);
	}
}

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

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

	back(1);

	fout<<setprecision(6)<<S/nr;

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