Cod sursa(job #1079574)

Utilizator mucenic_b101Bogdan Mucenic mucenic_b101 Data 12 ianuarie 2014 13:22:19
Problema Dezastru Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <cstdio>

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

void dez( int niv, double p ) {
    if( niv == k + 1 ) {
        P += p;
        ++nrp;
    }
    else
        for( int i = st[niv - 1] + 1 ; i <= n - k + niv ; ++i ) {
            st[niv] = i;
            dez( niv + 1, p * v[st[niv]] );
        }
}

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, 1 );

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

    fclose( f );
    fclose( g );

    return 0;
}