Cod sursa(job #991513)

Utilizator misu007Pogonaru Mihai misu007 Data 30 august 2013 17:00:46
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>
using namespace std;

int n,n1,k1,a[25];
double pt=0,p[25];

void back(int k,double pr)
{
    int i,j,e;
    double pr1;
    for(i=0;i<n;++i)
    {
        pr1=pr;
        e=1;
        for(j=0;j<k&&e;++j) if(a[j]==i) e=0;
        if(e)
        {
            a[k]=i;
            pr1*=p[i];
            if(k==k1-1)
            {
                pt+=pr1/n1;
            }
            else back(k+1,pr1);
        }
    }
}

void fact()
{
    n1=1;
    for(int i=2;i<=n;++i) n1*=i;
}

int main()
{
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    int i;
    scanf("%d%d",&n,&k1);
    for(i=0;i<n;++i) scanf("%lf",&p[i]);
    fact();
    back(0,1);
    printf("%.6lf\n",pt);
    return 0;
}