Cod sursa(job #3152946)

Utilizator mariaionescu2006Ionescu Maria mariaionescu2006 Data 27 septembrie 2023 10:45:17
Problema Dezastru Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("dezastru.in");
ofstream fout ("dezastru.out");
int n,k,x[30],q;
long long nr=1;
double v[30],s,t,w;
void afis(int q)
{
    s=1;
    for (int j=1;j<=q;j++)
         s=s*v[x[j]];
    t=t+s/w;
}
bool ok(int q)
{
    for (int i=1;i<q;i++)
         if(x[q]==x[i]) return false;
    return true;
}
bool sol(int q)
{
    return k==q;
}
void bck(int q)
{
    for (int i=1;i<=n;i++)
        {x[q]=i;
         if (ok(q)) {if (sol(q)) afis(q);
                     else bck(q+1);}}
}
int main()
{
    fin >>n>>k;
    for (int i=n-k+1;i<=n;i++)
         nr=nr*i;
    w=(double)nr;
    for (int i=1;i<=n;i++)
    {
        fin >>v[i];
    }
    bck(1);
    fout <<t;
    return 0;
}