Cod sursa(job #1142030)

Utilizator irimiecIrimie Catalin irimiec Data 13 martie 2014 13:17:43
Problema Dezastru Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
using namespace std;
 
#include <cstdio>
#include <cstring>
 
int N, K, C[64][64];
double v[64], sum;
 
void back(int lev, int f, double p)
{
    int i;
    if (lev == K)
        sum += p;
    else
        for (i = f; N+lev >= K+i; ++i)
            back(lev+1, i+1, p*v[i]);
}
 
int main()
{
    int i, j;
     
    freopen("dezastru.in", "r", stdin);
    freopen("dezastru.out", "w", stdout);
 
    scanf("%d %d", &N, &K);
    for (i = 0; i < N; ++i)
        scanf("%lf", v+i);
    sum = 0.;
    back(0, 0, 1.);
 
    for (i = 0; i <= N; ++i)
        for (C[i][0] = 1, j = 1; j <= i; ++j)
            C[i][j] = C[i-1][j]+C[i-1][j-1];
 
    printf("%lf\n", sum/(double)C[N][K]);
    return 0;
}