Cod sursa(job #1741859)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 15 august 2016 12:42:50
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <cmath>
#include <vector>
#include <iomanip>
#include <queue>
#include <cstring>
#include <algorithm>
#include <queue>
#include <unordered_set>
#include <set>
#include <map>
#include <stack>
using namespace std;

ifstream cin("dezastru.in");
ofstream cout("dezastru.out");

const int MAXN = 26;

double dp[1 + MAXN][1 + MAXN], v[1 + MAXN];
int combinations[1 + MAXN][1 + MAXN];

int main() {
    int n, k;
    cin >> n >> k;
    for (int i = 1; i <= n; i++)
        cin >> v[i];
    dp[0][0] = 1;
    for (int i = 1; i <= n; i++) {
        dp[i][0] = 1;
        for (int j = 1; j <= i; j++)
            dp[i][j] = dp[i - 1][j - 1] * v[i] + dp[i - 1][j];
    }
    combinations[0][0] = 1;
    for (int i = 1; i <= n; i++) {
        combinations[i][0] = 1;
        for (int j = 1; j <= i; j++)
            combinations[i][j] = combinations[i - 1][j - 1] + combinations[i - 1][j];
    }
    double answer = dp[n][k] / (double) combinations[n][k];
    cout << fixed << setprecision(6) << answer;
    return 0;
}