Cod sursa(job #2176541)

Utilizator DimaTCDima Trubca DimaTC Data 17 martie 2018 17:14:14
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<bits/stdc++.h>
#define NMAX 50
#define double long double
#define int long long
using namespace std;

int n,K,s[NMAX];
double rs;
double a[NMAX];
double f;

void BT(int k) {
	if (k==K+1) {
		double p=1;
		for (int i=1; i<=K; i++) {
			p*=a[s[i]];
		}
		rs+=p/f;
		return;
	}
	
	for (int i=s[0]+1; i<=n; i++) {
		s[k]=i;
		s[0]=i;
		BT(k+1);
	}
}

double calc(int k, int n) {
	double p=1;
	for (int i=k+1; i<=n; i++) p*=i;
	return p;
}

int32_t main() {
	ifstream cin("dezastru.in");
	ofstream cout("dezastru.out");
	cin>>n>>K;
	f=calc(K,n);
	for (int i=1; i<=n; i++) cin>>a[i];
	BT(1);
	cout<<fixed<<setprecision(10)<<rs;
	
	return 0;
}