Cod sursa(job #1142195)

Utilizator andreiagAndrei Galusca andreiag Data 13 martie 2014 16:33:15
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>

using namespace std;
const int Nmax = 30;

int N, K;

double p[Nmax];         // probabilitatile
double S[Nmax][Nmax];   // suma peste toate produsele din N cite K;
double C[Nmax][Nmax];   // combinari din N cite K;

int main()
{
    ifstream f ("dezastru.in");
    ofstream g ("dezastru.out");

    f >> N >> K;
    for (int i = 1; i <= N; i++) f >> p[i];
    
    for (int n = 0; n <= N; n++) {
        S[n][0] = 1;
        C[n][0] = 1;
    }

    for (int k = 1; k <= N; k++) {
        S[0][k] = 0;
        C[0][k] = 0;
    }
    
    for (int n = 1; n <= N; n++)
    for (int k = 1; k <= n; k++) {
        S[n][k] = S[n-1][k] + S[n-1][k-1]*p[n];
        C[n][k] = C[n-1][k] + C[n-1][k-1];
    }

    g << S[N][K] / C[N][K] << endl;


    return 0;
}