Cod sursa(job #2504661)

Utilizator stan_flaviusStan Flavius Stefan stan_flavius Data 5 decembrie 2019 12:37:56
Problema Dezastru Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#define nmax 26

using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");

int n,m;
int x[nmax];
double vec[nmax];
double long sum;

double long factorial(int val)
{
    double long p=1;
    for(int i=1; i<=val; i++)
        p*=i;
    return p;
}

void step(int k)
{
    double long p=1;
    for(int i=1; i<=k; i++)
        {
            p*=(vec[x[i]]);
        }

    p*=(factorial(k)*factorial(n-k));
    sum+=p;
}

void Back(int k)
{
    for(int i=x[k-1]+1; i<=n-m+k; i++)
        {
            x[k]=i;
            if(k==m) step(k);
            else Back(k+1);
        }

}

int main()
{
    fin>>n>>m;
    for(int i=1; i<=n; i++)
        fin>>vec[i];
    Back(1);

    fout<<sum/factorial(n);
    return 0;
}