Cod sursa(job #491595)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 11 octombrie 2010 20:23:04
Problema Dezastru Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <stdio.h>

int n,k;
long long c=1;
double p[26],pos=1,s;

void back(int x,int a)
{
    int i;
    if (x==k+1)
    {
        s+=pos;
        return;
    }
    for (i=a+1;i<=n-k+x;i++)
    {
        pos*=p[i];
        back(x+1,i);
        pos/=p[i];
    }
}

int main()
{
    int i;
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    scanf("%d%d",&n,&k);
    for (i=1;i<=n;i++) scanf("%lf",&p[i]);
    back(1,0);
    if (n>2*k) k=n-k;
    for (i=k+1;i<=n;i++) c*=i;
    for (i=1;i<=n-k;i++) c/=i;
    double x=(double)(s/c);
    printf("%.6lf",x);
    return 0;
}