Cod sursa(job #293931)

Utilizator razvan2006razvan brezulianu razvan2006 Data 2 aprilie 2009 10:27:57
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
 using namespace std;  
    
 #include <cstdio>  
 #include <cstring>  
   
 int N, K, C[64][64];  
 double v[64], sum;  
    
 void back(int lev, int f, double p)  
 {  
     int i;  
     if (lev == K)  
         sum += p;  
     else  
         for (i = f; N+lev >= K+i; ++i)  
             back(lev+1, i+1, p*v[i]);  
 }  
   
 int main()  
 {  
     int i, j;  
       
     freopen("dezastru.in", "r", stdin);  
     freopen("dezastru.out", "w", stdout);  
   
     scanf("%d %d", &N, &K);  
     for (i = 0; i < N; ++i)  
         scanf("%lf", v+i);  
 
    sum = 0.;  
     back(0, 0, 1.);  
   
    for (i = 0; i <= N; ++i)  
    for (C[i][0] = 1, j = 1; j <= i; ++j)  
           C[i][j] = C[i-1][j]+C[i-1][j-1];  
   
    printf("%lf\n", sum/(double)C[N][K]);  
    return 0;  
}