Cod sursa(job #2466086)

Utilizator rusu.ralucaRusu Raluca rusu.raluca Data 1 octombrie 2019 14:19:27
Problema Dezastru Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <iomanip>

using namespace std;

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

long long n, k, nrp;
float e[26], fact[26], dp[26][26];
int main(){
	fin >> n >> k;
	for(int i=1; i<=n; ++i){
		fin >> e[i];
	}
	fact[0]=1;
	for(int i=1; i<=n; ++i){
		fact[i]=fact[i-1]*i;
	}
	dp[0][0]=1;
	for(int i=1; i<=n; ++i){
		dp[i][0]=1;
		for(int j=1; j<=i; ++j){
			dp[i][j] = dp[i-1][j]+dp[i-1][j-1]*e[i];
		}
	}
	fout << dp[n][k]*fact[k]*fact[n-k]/fact[n];
}

/*cu vector STL
long long n, k, nrp;
vector <int> v;
float a[30], sol;

int  main(){
	fin >> n >> k;
	for(int i = 1; i <= n; ++i){
		fin >> a[i];
		v.push_back(i);
	}
	do{
		float p = 1;
		for(int i=1; i<=k; i++){
			p *= a[v[i]]; 
		}
		sol+=p;
		nrp++;
	}while(next_permutation(v.begin(), v.end()));

	cout << fixed << setprecision(6) << sol/nrp;
}*/