Cod sursa(job #37580)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 25 martie 2007 11:11:46
Problema Dezastru Scor 80
Compilator cpp Status done
Runda preONI 2007, Runda 4, Clasa a 9-a si gimnaziu Marime 0.86 kb
#include <stdio.h>
int n,k,sol[100];
double p[27],s=0,pr;
long long f[27],t;

void generare(){
     int i, j;
     for (i=1; i<=k; i++) sol[i]=i;
     while (1){
           t++;
           //for (j=1; j<=k; j++) printf("%d ",sol[j]);  //combinarea
           //printf("\n");
           pr=1;
           for (j=1;j<=k;j++)pr*=p[sol[j]];
           s+=pr;
           for (j=k; j>0 && sol[j]==n-k+j;j--);
           if (!j) return;
           sol[j]++;
           for (j++; j<=k; j++) sol[j]=sol[j-1]+1;
     }
}

int main(){
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    int i;
    scanf("%d %d",&n,&k);
    for (i=1;i<=n;i++)scanf("%lf",&p[i]);
    //for(i=1;i<=n;i++)printf("%f ",p[i]);
    f[0]=1;
    for (i=1;i<=25;i++){
        f[i]=f[i-1]*i;
    }
    generare();
    printf("%.7f",s/t);
    return 0;
}