Cod sursa(job #2422415)

Utilizator Rufus007Marincia Catalin Rufus007 Data 18 mai 2019 17:33:17
Problema Dezastru Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<fstream>
#include<iomanip>

using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
//SLOW version
//int n, k, x[30], number;
//double fract[30], suma;
//int combinari(int n,int k){
//	if(k==0||k==n)
//		return 1;
//	else
//		return combinari(n-1,k-1)+combinari(n-1,k);
//}

//void back(int l) {
//		if (l == k) {
//			number++;
//			double produs = 1;
//			for (int i = 1; i <= k; ++i)
//				produs *= fract[x[i]];
//			suma += produs;
//		} else {
//			for (int i = x[l] + 1; i <= n; ++i) {
//				x[l + 1] = i;
//				back(l + 1);
//			}
//		}
//
//}
//apel back(0)
int n,k,c[26][26];
double d[26][26],v[26];
int main() {
	fin >> n >> k;
	for (int i = 1; i <= n; ++i)
		fin >> v[i];

	for(int i=1;i<=n;++i)
		d[i][0]=c[i][i]=c[i][0]=1;
	d[0][0]=1;
	for (int i = 1; i <= n; ++i)
		for (int j = 1; j < i; ++j)
			c[i][j] = c[i-1][j-1] + c[i-1][j];
	for (int i = 1; i <= n; ++i)
		for (int j = 1; j <= i; ++j)
			d[i][j] = d[i-1][j-1]*v[i] + d[i-1][j];
	fout << setprecision(6) << d[n][k]/c[n][k];
	fin.close();
	fout.close();
	return 0;
}