Cod sursa(job #785522)

Utilizator IliesiDanielDaniel IliesiDaniel Data 9 septembrie 2012 12:34:10
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

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

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

void back(int k)
{
	int i;

	for(i=1; i<=N; i++)
	{
		st[k]=i;

		if(!viz[i])	if(k==K){
								++nr;
								prod=1;

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

								S+=prod;
							}
					else 	if(k<K)
							{
								viz[i]=1;
								back(k+1);
								viz[i]=0;
							}
	}
}

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;
}