Cod sursa(job #731117)

Utilizator vunsdnavunsdna vunsdna Data 7 aprilie 2012 15:20:24
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
#include <iomanip>

#define maxN 32

using namespace std;

ifstream in;
ofstream out;

double p[maxN];
double d[maxN][maxN];

int main()
{
    int N,K;

    in.open("dezastru.in");
    in>>N>>K;
    for(int i=1;i<=N;++i) in>>p[i];
    in.close();

    double f=1;
    for(int i=2;i<=K;++i) f*=i;
    for(int i=N-K+1;i<=N;++i) f/=i;

    d[1][1]=p[1];
    for(int i=2;i<=N;++i)
    {
        d[i][1]=d[i-1][1]+p[i];
        for(int j=2;j<=i&&j<=K;++j)
            d[i][j]=d[i-1][j]+d[i-1][j-1]*p[i];
    }

    out.open("dezastru.out");
    out<<fixed<<setprecision(6)<<d[N][K]*f<<'\n';
    out.close();

    return 0;
}