Cod sursa(job #2834259)

Utilizator KarinaDKarina Dumitrescu KarinaD Data 16 ianuarie 2022 18:31:31
Problema Dezastru Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <iostream>
#include <iomanip>

using namespace std;

const int N = 26;
double dp [ N ][ N ], v [ N ];

int main ( ) {
    
    ifstream fin ( "dezastru.in" );
    ofstream fout ( "dezastru.out" );
    
    int n, i, j, k, k1, r = 1;
    
    fin >> n >> k;
    
    for ( i = 1; i <= n; i++ )
        fin >> v [ i ];
    
    for ( i = 0; i <= n; i++ )
        dp [ i ][ 0 ] = 1;
    
    for ( i = 1; i <= n; i++ )
        for ( j = 1; j <= k; j++ )
            dp [ i ][ j ] = dp [ i - 1 ][ j ] + dp [ i - 1 ][ j - 1 ] * v [ i ];

    
    if ( 2 * k < n )
        k1 = n - k;
    
    else
        k1 = k;
    
    for ( i = k1 + 1; i <= n; i++ )
        r = r * i;
    
    for ( i = 1; i <= n - k1; i++ )
        r = r / i;
    
    fout << fixed << setprecision ( 6 ) << dp [ n ][ k ] / r;
    
    return 0;
}