Cod sursa(job #2003325)

Utilizator trifangrobertRobert Trifan trifangrobert Data 22 iulie 2017 17:53:28
Problema Dezastru Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iomanip>
#include <fstream>

using namespace std;

double sol = 0;
double v[30];
int n, m, st[30];
int nFact = 0;


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

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

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

void Back(int k, double sum)
{
	if (k > m)
	{
		sol += sum;
		nFact++;
		/*for (int i = 1;i <= m;i++)
			cout << v[st[i]] << " ";
		cout << "\n";*/
		return;
	}
	for (int i = st[k - 1] + 1;i <= n - m + k;i++)
	{
		st[k] = i;
		Back(k + 1, sum*v[st[k]]);
	}
}

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

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