Cod sursa(job #2504667)

Utilizator stan_flaviusStan Flavius Stefan stan_flavius Data 5 decembrie 2019 12:48:30
Problema Dezastru Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 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]]);
        }

    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(m)*factorial(n-m))/factorial(n);
    return 0;
}