Cod sursa(job #2776585)

Utilizator AACthAirinei Andrei Cristian AACth Data 20 septembrie 2021 11:37:52
Problema Dezastru Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>
using namespace std;

ifstream f("dezastru.in");
ofstream g("dezastru.out");
#define cin f
#define cout g
const int Max = 26;

int n,k;
double a[Max];
void read()
{
	f>>n>>k;
	int i;
	for(i=1;i<=n;i++)
	{
		f>>a[i];
	}
}
vector< double > prob;
int choose[Max];
long double ans = 0;


void generate_bkt(int current,double choose_product)
{
	if(current == k + 1)
	{
		ans += choose_product;
		return;
	}
	for(int i = choose[current - 1] + 1;i<=n;i++)
	{
		choose[current] = i;
		generate_bkt(current + 1,choose_product * a[i]);
	}
}
void solve()
{
	double C;
	int i;
	C = 1;
    for (i = 1; i <= k; i++)
        C *= i;
    for (i = n - k + 1; i <= n; i++)
        C = C * 1.0 / i;
    generate_bkt(1,1);
    ans *= C;
    cout<<fixed<<setprecision(10)<<ans<<'\n';
}

int32_t main()
{
    

        read();
        solve();
        
    
    return 0;
}