Cod sursa(job #2003246)

Utilizator trifangrobertRobert Trifan trifangrobert Data 22 iulie 2017 14:44:53
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iomanip>
#include <fstream>

using namespace std;

double sum = 0;
double v[30];
int n, m, st[30];
bool viz[30];
long long nFact = 1;

void Calculate(int )
{
	for (int i = 1;i <= n;i++)
		nFact = 1LL * nFact * i;
}

void Read()
{
	ifstream f("dezastru.in");
	f >> n >> m;
	for (int i = 1;i <= n;i++)
		f >> v[i];
	f.close();
}

void Solution()
{
	double s = 1;
	for (int i = 1;i <= m;i++)
		s *= v[st[i]];
	sum += s;
}

void Back(int k)
{
	if (k > m)
	{
		Solution();
		/*for (int i = 1;i <= m;i++)
			cout << v[st[i]] << " ";
		cout << "\n";*/
		return;
	}
	for(int i = 1;i <= n;i++)
		if (!viz[i])
		{
			viz[i] = true;
			st[k] = i;
			Back(k + 1);
			viz[i] = false;
		}
}

void Write()
{
	ofstream g("dezastru.out");
	g << setprecision(6) << sum / nFact << "\n";
	g.close();
}

int main()
{
	Read();
	Back(1);
	Calculate(n);
	Write();
	return 0;
}