Cod sursa(job #1905914)

Utilizator danstefanDamian Dan Stefan danstefan Data 6 martie 2017 11:37:41
Problema Dezastru Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <bits/stdc++.h>
using namespace std;
long long nr;
int n,k,a,b,i,j,V[30],K,in;
double v[30],p,s;
int main()
{
    ifstream f ("dezastru.in");
    ofstream g ("dezastru.out");
    f>>n>>K;
    for(i=1; i<=n; ++i)
        f>>v[i];
    if(n-K>K)a=n-K,b=K;
    else a=K,b=n-K;
    nr=1;
    for(j=1,i=a+1; i<=n||j<=b; ++i,++j)
    {
        if(i<=n)  nr*=i;
        if(j<=b)  nr/=j;
    }
    for(i=1; i<(1<<n); ++i)
    {
        k=0;
        for(j=0; j<n; ++j)
            if(i&(1<<j))V[++k]=j+1;
        if(k==K)
        {
            p=1;
            for(in=1; in<=k; ++in)
                p*=v[V[in]];
            s+=p/nr;
        }
    }
    g<<s;
    return 0;
}