Cod sursa(job #2313555)

Utilizator DawlauAndrei Blahovici Dawlau Data 7 ianuarie 2019 02:49:19
Problema Dezastru Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
#include <vector>
#include <iomanip>

using namespace std;

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

int main() {

	int N, K;
	fin >> N >> K;

	vector <double> Arr(N);
	for (double &itm : Arr) fin >> itm;

	vector < pair <double, int> > dp;
	dp.reserve(N * N * N * N * N);

	double sum = 0.0;
	unsigned long long cnt = 0;
	for (int idx = 0; idx < (int)Arr.size(); ++idx) {
		for (const pair <double, int> &itm : dp)
			if (itm.second + 1 < K)
				dp.push_back({ itm.first * Arr[idx], itm.second + 1 });
			else
				sum += itm.first * Arr[idx], ++cnt;
		dp.push_back({Arr[idx], 1});
	}
	
	for (; K; --K) sum *= K, cnt = 1ULL * cnt * K;

	fout << fixed << setprecision(6) << sum / cnt;
}