Cod sursa(job #38122)

Utilizator ZeusCatalin Tiseanu Zeus Data 25 martie 2007 14:53:30
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb

using namespace std;

#include <iostream>



int main()
{
    freopen("dezastru.in", "r", stdin);
    freopen("dezastru.out", "w", stdout); 
    
    long long fac = 1;
    
    int N, K, at, j;
    double A[26], p, tot(0.0);   
    
    cin >> N >> K;
    for( int i = 0; i < N; i++ )
         cin >> A[i];
    
    for( int msk = 1; msk < (1<<N); ++msk )
    {
         for( j = at = 0; j < N; j++ )
              at += ( msk >> j & 1 );
         
         if( at != K )
              continue;     
              
         p = 1.0;
         
         for( j = 0; j < N; j++ )
              if( msk >> j & 1 )
                  p *= A[j];
         
         tot += p;
    }
    
    for( long long i = K + 1; i <= N; i++ )
         tot /= i;
         
    printf("%0.6lf\n", tot );
    
    return 0;
}