Cod sursa(job #775301)

Utilizator visanrVisan Radu visanr Data 7 august 2012 19:03:59
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
#include <cstdlib>
using namespace std;


double A[31][31], P[31], comb, sol;
int N, K;


double cmb(int n, int k)
{
       double res = 1;
       int i;
       for(i = k + 1; i <= n; i++) res *= i;
       for(i = 2; i <= n - k; i++) res /= i;
       return res;
}

void dinamica()
{
     A[0][0] = 1;
     for(int i = 1; i <= N; i++)
     {
             A[i][0] = 1;
             for(int j = 1; j <= K; j++) 
                     A[i][j] = A[i - 1][j] + A[i - 1][j - 1] * P[i];
     }
}

int main()
{
    freopen("dezastru.in", "r", stdin);
    freopen("dezastru.out", "w", stdout);
    int i;
    scanf("%i %i", &N, &K);
    for(i = 1; i <= N; i++) scanf("%lf", &P[i]);
    comb = cmb(N, K);
    dinamica();
    sol = A[N][K] / comb;
    printf("%lf\n", sol);
    return 0;
}