Cod sursa(job #1886483)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 20 februarie 2017 21:59:44
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <iomanip>
#define VAL 35

using namespace std;

ifstream fin("dezastru.in");
ofstream fout("dezastru.out");

int N, K, i, j;
double dp[VAL][VAL];
double P[VAL], nr;
double x[VAL], y[VAL];

void Pascal()
{
    x[1]=x[2]=y[1]=y[2]=1;
    for (i=2; i<=N; i++)
    {
        for (j=1; j<=i+1; j++)
          y[j]=x[j]+x[j-1];
        for (j=1; j<=i+1; j++)
          x[j]=y[j];
    }
    nr=y[K];
}


int main()
{
    fin >> N >> K;
    for (i=1; i<=N; i++)
    {
        fin >> P[i];
        dp[i-1][0]=1;
    }
    dp[1][1]=P[1];
    for (i=1; i<=N; i++)
      for (j=1; j<=min(i, K); j++)
        dp[i][j]=dp[i-1][j]+dp[i-1][j-1]*P[i];
    dp[N][K]*=2;
    Pascal();
    nr*=2;
    dp[N][K]/=nr;
    fout << fixed << setprecision(7) << dp[N][K] << '\n';
    fin.close();
    fout.close();
    return 0;
}