Cod sursa(job #1461264)

Utilizator borcanirobertBorcani Robert borcanirobert Data 15 iulie 2015 11:46:24
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
using namespace std;

ifstream fin("dezastru.in");
ofstream fout("dezastru.out");

const int MAX = 30;
int N, K;
double v[MAX];
double D[MAX][MAX];

int Comb( int n, int k );

int main()
{
    int i, j;

    fin >> N >> K;
    for ( i = 1; i <= N; i++ )
        fin >> v[i];

    for ( i = 0; i <= N; i++ )
        D[i][0] = 1;

    for ( i = 1; i <= N; i++ )
        for ( j = 1; j <= K && j <= i; j++ )
            D[i][j] = D[i - 1][j] + D[i - 1][j - 1] * v[i];

    fout << D[N][K] / Comb( N, K ) << '\n';

    fin.close();
    fout.close();
    return 0;
}

int Comb( int n, int k )
{
    if ( n == k || k == 0 )
        return 1;
    if ( n - k == 1 || k == 1 )
        return n;

    return Comb( n - 1, k - 1 ) + Comb( n - 1, k );
}