Cod sursa(job #1327933)

Utilizator SebiCarhatCarhat Eusebiu SebiCarhat Data 27 ianuarie 2015 16:54:39
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include<iomanip>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int n,k,v[26],x=1;
double a[26];
double pr,s;
void afisare(int p)
{
    pr=1;
    for(int i=1;i<=p;++i)
            pr=pr*a[v[i]];
        pr=pr/x;
    s=s+pr;
}
bool valid(int p)
{
    bool ok=true;
    for(int i=1;i<p;++i)
        if(v[i]==v[p]) ok=false;
    return ok;
}
void bk(int p)
{
    int pval;
    for(pval=1;pval<=n;++pval)
    {
        v[p]=pval;
        if(valid(p))
        if(p==k) afisare(p);
        else
        bk(p+1);
    }
}
int main()
{
    f>>n>>k;
    for(int i=1;i<=n;++i)
        {f>>a[i];
        x=x*i;}
    bk(1);
    g<<fixed<<setprecision(6)<<s;
    f.close();
    g.close();
    return 0;
}