Cod sursa(job #3151106)

Utilizator PHOSSESSEDProsie Radu-Teodor PHOSSESSED Data 19 septembrie 2023 19:26:57
Problema Dezastru Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<fstream>
#include<vector>
#include<cmath>
#include<iomanip>
using namespace std;
using ll = long long;

ifstream cin("dezastru.in");
ofstream cout("dezastru.out");



long double v[25];

long double p(int &masca)
{
    long double ans = 1;
    for(int i = 0 ; i < 25 ; i++)
        if(masca & (1 << i))
            ans *= v[i];

    return ans;
}

int main()
{
    int n,k,maxi; cin >> n >> k; maxi = (1 << n);
    for(int i = 0 ; i < n ; i++) cin >> v[i];
    long double f = 1,ans = 0;
    for(int i = k + 1; i <= n ; i++) f *= i;
    for(int m = 0; m < maxi ; m++)
    {
        if(__builtin_popcount(m) == k)
            ans += p(m) / f;
    }

    cout << fixed << setprecision(9) << ans;
}