Cod sursa(job #2504699)

Utilizator stan_flaviusStan Flavius Stefan stan_flavius Data 5 decembrie 2019 13:20:26
Problema Dezastru Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 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 pr=1;
    for(int i=1; i<=val; ++i)
        pr*=i;
    return pr;
}

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

    fout<<pr<<endl;
    sum+=pr;
}

void Back(int k,double long p)
{
    if(k==m) {sum+=p; fout<<p<<" "; }
    else
        for(int i=x[k-1]+1; i<=n-m+k; ++i)
            {
                x[k]=i;
                Back(k+1,p*vec[x[k]]);
            }
}

int main()
{
    fin>>n>>m;
    for(int i=1; i<=n; i++)
        fin>>vec[i];
    Back(1,1);
    fout<<sum*factorial(m)*factorial(n-m)/factorial(n);
    return 0;
}