Cod sursa(job #2728835)

Utilizator gavra_bogdanBogdan Gavra gavra_bogdan Data 23 martie 2021 19:14:04
Problema Dezastru Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.53 kb
#include <fstream>
#include <iomanip>
#define ld long double

ld ans, v[30], n, k;

void calc(int curr, ld prob, int kk = 0) {
	if(curr==n+1 or kk==k) {
		if(kk==k) ans += prob;
		return;
	}
	calc(curr+1, prob, kk);
	calc(curr+1, prob*v[curr], kk+1);
}

int main() {
	std::ifstream fin("dezastru.in");
	std::ofstream fout("dezastru.out");
	fin>>n>>k;
	for(int i=1;i<=n;i++) fin>>v[i];
	calc(1, 1.0);
	for(int i=1;i<=n-k;i++) ans*=(ld)i;
	for(int i=k+1;i<=n;i++) ans/=(ld)i;
	fout<<std::fixed<<std::setprecision(6)<<ans;
}