Cod sursa(job #1779934)

Utilizator ionanghelinaIonut Anghelina ionanghelina Data 15 octombrie 2016 18:22:01
Problema Dezastru Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<bits/stdc++.h>
using namespace std;
int st[35],k,n,nr;
float v[35],sum,sol;
bool valid(int p)
{
    int nr=0;
    for(int i=1;i<=p;i++)
    {
        nr=nr+st[i];
    }
    return (nr==k);
}
void solve(int p)
{
    float pr=1.0;
    for(int i=1;i<=p;i++)
    {
        if(st[i])
        {
            pr=pr*v[i];
        }
    }
    sum=sum+pr;
    nr++;
}
void bktr(int p)
{
    for(int i=0;i<=1;i++)
    {
        st[p]=i;
        if(p==n)
        {
            if(valid(p))
            {
               solve(p);
            }
        }
            else
        if(p<n) bktr(p+1);
    }
}
int main()
{
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++)
    {
        scanf("%f",&v[i]);
    }
    bktr(1);
    sol=sum/(nr*1.0);
    printf("%.6f\n",sol);

    return 0;
}