Cod sursa(job #2257938)

Utilizator bojemoiRadu Mamaliga bojemoi Data 10 octombrie 2018 17:40:08
Problema Dezastru Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>

using namespace std;

ifstream fin("dezastru.in");
ofstream fout("dezastru.out");

int n, w, v[28], comb = 0;
double probabilitatea = 0, p[28];

void calculeaza(){
    double pr = 1;
    for(int i = 1; i<=w; ++i){
        pr*=p[v[i]];
    }
    probabilitatea+=pr;
}



void combinare(int k){
    for(int i = v[k-1] + 1; i<=n; ++i){
        v[k] = i;
        if(k==w){ comb++;
                calculeaza();
        }
        else if(n-v[k]>=w-k) combinare(k+1);
    }
}
int main(){
    fin>>n>>w;
    v[0] = 0;

    for(int i = 1; i<=n; ++i) fin>>p[i];
    if(w==0){
        fout<<1; return 0;
    }
    combinare(1);

    fout<<(double) probabilitatea / comb;

    return 0;
}