Cod sursa(job #2167788)

Utilizator xRoALexBirtoiu Alexandru xRoALex Data 13 martie 2018 23:35:12
Problema Dezastru Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
/*#include <cstdio>

using namespace std;

FILE * f=fopen("dezastru.in","r");
FILE * g=fopen("dezastru.out","w");

int n,k;
double v[27],sum=0,nr=0;
void bk(int x,double s, int p)
{
    if(x>k)
    {
        sum += s;
        nr++;
    }
    else
    {
        for(int i = p+1; i <= n-k+x; ++i)
        {
            bk(x+1,s*v[i],i);
        }
    }
}
int main()
{
    fscanf(f,"%d%d",&n,&k);
    for(int i=1;i<=n;i++)
        fscanf(f,"%lf",&v[i]);
    bk(1,1,0);
    fprintf(g,"%.6f",sum/nr);
    //g<<fixed<<setprecision(6)<<sum/nr;
    return 0;
}*/
#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

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

const int NMAX = 27;

double v[NMAX];
double sumf=0,c=0;
int n,k;

inline void read()
{
    in>>n>>k;
    for(int i=1;i<=n;i++)
    {
        in>>v[i];
    }
}

inline void solve(int x,double sum,int p)
{

    if(x>k)
    {
        sumf+=sum;
        c++;
    }
    else
    {
        for(register int i=p+1;i<=n-k+x;++i)
        {
            solve(x+1,sum*v[i],i);
        }
    }
}

int main()
{
    read();
    solve(1,1,0);
    out<<fixed<<setprecision(6)<<sumf/c;
}