Cod sursa(job #62615)

Utilizator ZeusCatalin Tiseanu Zeus Data 23 mai 2007 15:03:26
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb

using namespace std;

#include <iostream>

int N, K;
double A[28], p, tot(0.0);

void baga( int pos, int left )
{
     if( left == 0 )
     {
         tot += p;
         return;    
     }
     
     if( pos >= N )
         return ;
     
     if( pos + left > N )
         return ;

     baga( pos + 1, left );
     
     p *= A[pos];
     baga( pos + 1, left - 1 );
     p /= A[ pos ];     
}

int main()
{
    freopen("dezastru.in", "r", stdin);
    freopen("dezastru.out", "w", stdout); 

    cin >> N >> K;
    for( int i = 0; i < N; i++ )
         cin >> A[i];
    
    if( K == 0 )
    { printf("1.0\n"); return 0; }
    
    p = 1.0;
    baga( 0, K );
    
    for( int i = K + 1; i <= N; i++ )
         tot /= i;
         
    printf("%0.6lf\n", tot );
    
    return 0;
}