Cod sursa(job #1209790)

Utilizator daniel.amarieiDaniel Amariei daniel.amariei Data 18 iulie 2014 18:13:45
Problema Dezastru Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>

int N, K, nc;
double P[32], prob_sum;

void generate(double p, int n, int k)
{
    if (k > K)
    {
        // Aduna probabilitatea curenta
        prob_sum += p;
        ++nc;
        
    }
    else
    {
        for (int i = n; i <= N - (K - k); ++i)
        {
            generate(P[i] * p, i + 1, k + 1);
        }    
    }
}


int main()
{
    freopen("dezastru.in", "r", stdin);
    freopen("dezastru.out", "w", stdout);
    
    scanf("%d %d", &N, &K);
    
    for (int i = 1; i <= N; ++i)
    {
        scanf("%lf", P + i);
    }
    

    generate(1.0, 1, 1);

    printf("%.6lf\n", prob_sum / nc);
    
    return 0;
}