Cod sursa(job #1692233)

Utilizator krityxAdrian Buzea krityx Data 20 aprilie 2016 15:12:55
Problema Dezastru Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <vector>
#include <list>
#include <iomanip>
using namespace std;

list<int> chosen;

double sum = 0;
int num = 0;

void back(int i, int n, int k, vector<double> v, double product)
{
	if (chosen.size() == k)
	{
		sum += product;
		num++;
	}
	else
	{
		for (int j = i; j < n - k + chosen.size() + 1; j++)
		{
			chosen.push_back(j);
			product *= v[j];
			back(j + 1, n, k, v, product);
			chosen.pop_back();
			product /= v[j];
		}
	}
}

int main()
{
	ifstream in("dezastru.in");
	ofstream out("dezastru.out");

	int n, k;
	double x;
	vector<double> v;
	

	in >> n >> k;
	for (int i = 0; i < n; i++)
	{
		in >> x;
		v.push_back(x);
	}

	back(0, n, k, v, 1.0);

	
	out << setprecision(7) << sum / num;

	return 0;
}