Cod sursa(job #1504584)

Utilizator FayedStratulat Alexandru Fayed Data 17 octombrie 2015 22:07:54
Problema Dezastru Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#define NMAX 26

int N, k;
float p[NMAX];
int   Comb[NMAX][NMAX];
float partialP[NMAX][NMAX];

void _read() {
    
    freopen("dezastru.in", "r", stdin);
    freopen("dezastru.out", "w", stdout);
    
    scanf("%d %d", &N, &k);
    for(register int i = 1; i <= N; ++i)
        scanf("%f", &p[i]);
}

void _solve() {
    
    partialP[0][0] = Comb[0][0] = 1;
    
    for(register int i = 1; i <= N; ++i) {
        partialP[i][0] = Comb[i][0] = i;
        
        for(register int j = 1; j <= k; ++j) {
            Comb[i][j]     = Comb[i-1][j] + Comb[i-1][j-1];
            partialP[i][j] = partialP[i-1][j] + partialP[i-1][j-1] * p[i];
        }
    }
}

void _write() {
    
    printf("%lf", partialP[N][k] / Comb[N][k]);
}

int main(void) {
    
    _read();
    _solve();
    _write();
    
    return 0;
}