Cod sursa(job #2388828)

Utilizator mihailrazMihail Turcan mihailraz Data 26 martie 2019 15:58:05
Problema Dezastru Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <iomanip>

using namespace std;
ifstream fi("dezastru.in");
ofstream fo("dezastru.out");
const int nmax=25;
int n, k, fact=1;
int S[nmax+5], F[nmax+5];
double s;
double P[nmax+5];

void g(int niv)
{
    if(niv==n)
    {
        double p=1;
        for(int i=0; i<k; i++)
            p*=P[S[i]];
        fo<<p<<"\n";
        s+=(double)p/fact;
    }
    else
    {
        for(int i=0; i<n; i++)
        {
            if(!F[i])
            {
                F[i]=1;
                S[niv]=i;
                g(niv+1);
                F[i]=0;
            }
        }
    }
}

int main()
{
    fi>>n>>k;
    for(int i=0; i<n; i++)
        fi>>P[i];
    for(int i=2; i<=n; i++)
        fact*=i;
    g(0);
    fo<<fixed<<setprecision(6)<<s;
    fi.close();
    fo.close();
    return 0;
}