Cod sursa(job #2211534)

Utilizator _Victor_Victor Ciobanu _Victor_ Data 10 iunie 2018 19:57:30
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("dezastru.in");

long long F[26],np;
int n,km,S[26];
float P[26],s;

long long fact(int a){
	if(F[a]) return F[a];
	else {
		F[a]=fact(a-1)*a;
		return F[a];
	}
}

void bk(int k){
	if(k<=km){
		for(int i=S[k-1]+1;i<=n;i++){
			S[k]=i;
			bk(k+1);
			S[k]=0;
		}
	}else{
		float p=1;
		for(int i=1;i<=km;i++) p*=P[S[i]];
		s+=1.000000*(p*2)/np;
	}
}

int main(){
	freopen ("dezastru.out","w",stdout);
	F[1]=1;
	fin>>n>>km;
	for(int i=1;i<=n;i++) fin>>P[i];
	np = fact(n);
	bk(1);
	//cerr<<s;
	printf("%.6f",s);
	//cerr<<clock()*1000.0/CLOCKS_PER_SEC<<'\n';
	return 0;
}