Cod sursa(job #2289889)

Utilizator Raoul_16Raoul Bocancea Raoul_16 Data 25 noiembrie 2018 14:38:59
Problema Dezastru Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
//
//  Dezastru.cpp
//  
//
//  Created by Raoul Bocancea on 25/11/2018.
//

#include <fstream>
#include <iomanip>

const std :: string programName = "dezastru";
std :: ifstream f(programName + ".in");
std :: ofstream g(programName + ".out");

int N, K;

double answer, product(1), v[30], dp[30][30];

void read(void);
void dynamic(void);

int main(void) {
    read();
    dynamic();
    g << std :: fixed << std :: setprecision(6) << answer / product << '\n';
    return 0x0;
}

void read(void) {
    f >> N >> K;
    for (int i = 1; i <= N; ++i)
        f >> v[i];
}

void dynamic() {
    
    for (int i = 0; i <= N; ++i)
        dp[i][0] = 1;
    
    for (int i = 1; i <= N; ++i)
        for (int j = 1; j <= K; ++j)
            dp[i][j] = dp[i - 1][j] + v[i] * dp[i - 1][j - 1];
    
    answer = dp[N][K];
    
    for (double i = 1.0; i <= N; ++i) {
        product *= i;
        if (i <= K)
            product /= i;
        if (i <= N - K)
            product /= i;
    }
}