Cod sursa(job #1692236)

Utilizator conttestecontteste12345 contteste Data 20 aprilie 2016 15:16:04
Problema Dezastru Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
int n, k;
double v[26], a[26][26];
void init(){
    for(int i=0; i<=n; i++)a[i][0]=1;
}

long long factorial(int x){
    long long p=1;
    for(int i=1; i<=x; i++)p*=i;
    return p;
}

void read(){
    in>>n>>k;
    for(int i=1; i<=n; i++)in>>v[i];
    init();
}

void dp(){
    for(int i=1; i<=n; i++){
        for(int j=1; j<=k; j++){
            a[i][j]=a[i-1][j]+a[i-1][j-1]*v[i];
        }
    }
    long long nfact, kfact, n_kfact;
    nfact=factorial(n);
    kfact=factorial(k);
    n_kfact=factorial(n-k);
    out<<fixed<<setprecision(6)<<a[n][k]/(nfact/(kfact*n_kfact));
}

int main(){
    read();
    dp();
    return 0;
}