Cod sursa(job #1061882)

Utilizator mucenic_b101Bogdan Mucenic mucenic_b101 Data 20 decembrie 2013 13:35:33
Problema Dezastru Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <cstdio>

int st[26], nrp, n, k;
double v[26], P;

void check( ) {
    double p = v[st[1]];
    ++nrp;
    for( int i = 2 ; i <= k ; ++i )
        p *= v[st[i]];
    P += p;
}

void dez( int niv ) {
    if( niv == k + 1 )
        check();
    else
    for( int i = st[niv - 1] + 1 ; i <= n - k + niv ; ++i ) {
        st[niv] = i;
        dez( niv + 1 );
    }
}

int main () {
    FILE *f, *g;
    f = fopen( "dezastru.in", "r" );
    g = fopen( "dezastru.out", "w" );

    fscanf( f, "%d%d", &n, &k );

    for( int i = 1 ; i <= n ; ++i )
        fscanf( f, "%lf", &v[i] );

    dez( 1 );

    fprintf( g, "%.6lf", P / nrp );

    fclose( f );
    fclose( g );

    return 0;
}