Cod sursa(job #991552)

Utilizator misu007Pogonaru Mihai misu007 Data 30 august 2013 19:11:44
Problema Dezastru Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <cstdio>
using namespace std;

int n,k1;
double p1=1,pt,p[25];

void back(int k,int t,long double pr)
{
    if(k==k1)
    {
        pt+=pr;
    }
    else
    {
        for(int i=t;i+k1<=n+k;++i)
        {
            back(k+1,i+1,pr*p[i]);
        }
    }
}

void comb()
{
    int i;
    for(i=n-k1+1;i<=n;++i) p1*=i;
    for(i=2;i<=k1;++i) p1/=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]);
    back(0,0,1);
    comb();
    printf("%.6lf\n",pt/p1);
    return 0;
}