Cod sursa(job #405312)

Utilizator kyrkDragos Dumitrescu kyrk Data 27 februarie 2010 21:18:36
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<cstdio>
const int maxn = 30;
int i , j , k , n;
double prob[maxn] , total , part ,act;
int comb[maxn][maxn];
double A[maxn][maxn];
void dinamica() {
    int i , j ;
    for ( i = 1 ; i <= n ; ++i ) {
        comb[i][1] = i;
        for ( j = 2 ; j <= i ; ++j )
            comb[i][j] = comb[i - 1][j] + comb[i - 1][j - 1];
    }
    for( i = 1 ; i <= n ; ++i ){
        A[i][1] = A[i - 1][1] + prob[i];
        for( j = 2 ; j <= i ; ++j )
            A[i][j] = A[i - 1][j - 1] * prob[i] + A[i - 1][j];
    }
}
int main()
{
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    scanf("%d %d",&n,&k);
    for( i = 1 ; i <= n ;++i )
        scanf("%lf",&prob[i]);
    dinamica();
printf("%.7lf\n",A[n][k] / comb[n][k]);
return 0;
}