Cod sursa(job #1960202)

Utilizator LittleWhoFeraru Mihail LittleWho Data 10 aprilie 2017 11:53:08
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <vector>

#define MAX_N 50

using namespace std;

int n;
int k;
double v[MAX_N];
double M[MAX_N][MAX_N];

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

    in >> n >> k;

    for (int i = 1; i <= n; i++) {
        in >> v[i];
        M[i][0] = 1;
    }
    M[0][0] = 1;

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= i; j++) {
            M[i][j] = M[i - 1][j - 1] * v[i] + M[i - 1][j];
        }
    }

    /*for (int i = 0; i <= n; i++) {
        for (int j = 0; j <= i; j++) {
            cout << M[i][j] << " ";
        } cout << endl;
    } cout << endl;*/

    double sum = M[n][k];
    //cout << sum << endl;
    double divisor = 1;
    for (int i = k + 1; i <= n; i++) divisor *= i;
    for (int i = 2; i <= n - k; i++) divisor /= i;

    out << setprecision(6) << sum / divisor << "\n";

    return 0;
}