Cod sursa(job #2493413)

Utilizator Moldovan_PaulMoldovan Paul Moldovan_Paul Data 16 noiembrie 2019 12:05:35
Problema Dezastru Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include<fstream>
#include<iomanip>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int p,st[30],niv,n,m;
double v[30],s,nrapp;
int fac(int x)
{
    int nr=1;
    for(int i=1;i<=x;i++) nr*=i;
    return nr;
}
double rezolv(int niv)
{
    double p=1;
    int i;
    for(i=1;i<=niv;i++)
    {
        p=p*(v[st[i]]);
    }
    return p;
}
int validare(int niv)
{
    int i;
    for(i=1;i<niv;i++)
        if(st[i]==st[niv]) return 0;
    return 1;
}
void bkt(int niv)
{
    int i;
    for(i=st[niv-1]+1;i<=n;i++)
    {
        st[niv]=i;
        if(validare(niv))
        {
            if(m==niv)
            {
                s=s+(fac(m)*(rezolv(niv)/nrapp));
            }
            else bkt(niv+1);
        }
    }
}
int main()
{
    fin>>n>>m;
    nrapp=1;
    for(int i=2;i<=n;i++)
    {
        nrapp*=i;
    }
    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
    }
    bkt(1);
    fout<<fixed<<setprecision(6)<<s;
}