Cod sursa(job #1988014)

Utilizator rebecca0312Andrei Rebecca rebecca0312 Data 1 iunie 2017 20:54:33
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<cstdio>
#include<algorithm>
using namespace std;
const int NMAX=30;
double v[NMAX],s;
int n,k,vv[NMAX];
long long comb;
void combinari(int ind, int nr){
    if(ind>k){
        double prod=1;
        for(int i=1;i<=k;i++)
            prod*=v[vv[i]];
        s+=(double)prod/comb;
        return ;
    }
    for(int i=nr+1;i<=n;i++){
        vv[ind]=i;
        combinari(ind+1, i);
    }
}
int main(){
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    scanf("%d%d", &n, &k);
    comb=1;
    for(int i=max(k, n-k)+1;i<=n;i++)
        comb*=i;
    for(int i=1;i<=min(k, n-k);i++)
        comb/=i;
    for(int i=1;i<=n;i++)
        scanf("%lf", &v[i]);
    combinari(1, 0);
    printf("%.6f", s);
    return 0;
}