Cod sursa(job #3328347)

Utilizator WiseAndrei4Vetrila Andrei WiseAndrei4 Data 7 decembrie 2025 20:49:54
Problema Dezastru Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <iomanip>
#define ll long long
// #define gout cout
// #define fin cin
using namespace std;
ifstream fin("dezastru.in");
ofstream gout("dezasstru.out");
long double p=0,x;
int n,k;
void bck(vector<double>&v,vector<bool>&viz,vector<int>&r)
{
    if(r.size()==k)
    {
        x=1;
        for(auto i:r)x*=v[i];
        p+=x;
    }
    else
    {
        for(int i=0; i<n; ++i)if(!viz[i])
            {
                viz[i]=1;
                r.push_back(i);
                bck(v,viz,r);
                r.pop_back();
                viz[i]=0;
            }
    }
}
ll factorial(int &n)
{
    ll r=1;
    for(ll i=1; i<=n; ++i)r*=i;
    return r;
}
int main()
{
    ios_base::sync_with_stdio(false);
    fin.tie(0);
    gout.tie(0);
    fin>>n>>k;
    vector<double>v(n);
    vector<bool>viz(n,0);
    vector<int>r;
    for(int i=0; i<n; ++i)fin>>v[i];
    bck(v,viz,r);
    gout<<fixed<<setprecision(6)<<p/(long double)factorial(n);
    return 0;
}