Cod sursa(job #2493424)

Utilizator muresan_sabinaMuresan Sabina muresan_sabina Data 16 noiembrie 2019 12:12:33
Problema Dezastru Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
using namespace std;
ifstream fin ("dezastru.in");
ofstream fout ("dezastru.out");
int n, k, st[26], nr;
double v[26], p, s;
int validare(int niv)
{
    for(int i=1;i<niv;i++)
    {
        if(st[niv]==st[i])
            return 0;
    }
    return 1;
}

void tipar(int niv)
{
    p=1;
    for(int i=1;i<=k;i++)
    {
        p=p*v[st[i]];
    }
    s=s+p;
    p=1;
    for(int i=k; i>=1; i--)
    {
        p=p*v[st[i]];
    }
    s=s+p;
}

void bck (int niv)
{
    int i;
    for(i=st[niv-1]+1;i<=n;i++)
    {
        st[niv]=i;
        if(validare(niv)==1)
        {
            if(niv==k)
            {
                tipar(niv);
            }
            else
                bck(niv+1);
        }
    }
}
int factorial(int n)
{
    if(n > 1)
        return n * factorial(n - 1);
    else
        return 1;
}
int main()
{
    int i;
    fin>>n>>k;
    s=0;
    for(i=1;i<=n;i++)
    {
        fin>>v[i];
    }
    bck(1);
    nr=factorial(n);
    fout<<s/nr;
    return 0;
}