Cod sursa(job #991522)

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

int n,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+=2*pr1;
            }
            else back(k+1,pr1);
        }
    }
}

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