Cod sursa(job #1759170)

Utilizator alittlezzCazaciuc Valentin alittlezz Data 18 septembrie 2016 16:31:30
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <algorithm>
#include <iomanip>
#include <string.h>

using namespace std;

double v[30], dp[30][30];

double comb(int n, int k){
    int i;
    double ans = 1;
    for(i = k+1;i <= n;i++){
        ans *= i;
    }
    for(i = 2;i <= n-k;i++){
        ans *= i;
    }
    return ans;
}

int main()
{
    ifstream fin("dezastru.in");
    ofstream fout("dezastru.out");
    int n,k,j,i;
    fin>>n>>k;
    for(i = 1;i <= n;i++){
        fin>>v[i];
    }
    for(i = 0;i <= n;i++){
        dp[i][0] = 1;
    }
    dp[1][1] = v[1];
    for(i = 2;i <= n;i++){
        for(j = 1;j <= k;j++){
            dp[i][j] = dp[i-1][j] + v[i] * dp[i-1][j-1];
        }
    }
    fout<<fixed<<setprecision(7)<<dp[n][k]/comb(n, max(k, n-k));
    return 0;
}