Cod sursa(job #1692248)

Utilizator conttestecontteste12345 contteste Data 20 aprilie 2016 15:26:03
Problema Dezastru Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 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++){
        int j=1;
        while(j<=k&&j<=i){
            a[i][j]=a[i-1][j]+a[i-1][j-1]*v[i];
            j++;
        }
    }
    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;
}