Cod sursa(job #1756174)

Utilizator PaulCbnCiobanu Paul PaulCbn Data 12 septembrie 2016 01:13:21
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <cstdio>
#define NMAX 26
using namespace std;

int N,K;

float dp[NMAX],v[NMAX];
int pascal[NMAX];

void citire()
{
    scanf("%d%d",&N,&K);
    for(int i=1; i<=N; i++)
        scanf("%ff",&v[i]);
}


void init_pascal()
{
    pascal[0]=1;
    for(int n=1; n<=N; n++)
        for(int k=N; k>=0; k--)
            pascal[k]= pascal[k-1] + pascal[k];
}

void init_dp()
{
    dp[0]=1;

}

void rezolvare()
{
    dp[1]=v[1];
    for(int i=2;i<=N;i++)
        for(int k=min(K,i);k>=1;k--)
            dp[k]=dp[k]+dp[k-1]*v[i];
    cout<<dp[K]/pascal[K];

}


int main()
{
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    citire();
    init_dp();
    init_pascal();
    rezolvare();

    return 0;
}