Cod sursa(job #2108920)

Utilizator flibiaVisanu Cristian flibia Data 18 ianuarie 2018 22:23:28
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, k, cnt, st[30];
double p[30], rs;

void back(int nr, int lvl){
	if(lvl == k + 1){
		cnt++;
		double nr = 1;
		for(int i = 1; i <= k; i++)
			nr = nr * p[st[i]];	
		rs += nr;
		return;
	}
	for(int i = nr + 1; i <= n; i++)
		st[lvl] = i, back(i, lvl + 1);
}

int main(){
	in >> n >> k;
	for(int i = 1; i <= n; i++)
		in >> p[i];
	back(0, 1);
	out << fixed << setprecision(6) << rs / cnt;
//	cerr << clock() * 1000.0 / CLOCKS_PER_SEC;
	return 0;
}