Cod sursa(job #1720848)

Utilizator RG1999one shot RG1999 Data 23 iunie 2016 18:10:07
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <cstdio>

using namespace std;
int  l[26],n,k,pas,ok,i,nr,m;
double x,w,z,pr,v[26],p[1000000];
int valid(int x,int y)
{
    for(int i=1;i<x;i++)
        if(l[i]==y)
    return 0;
    return 1;
}
int main()
{
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++) scanf("%lf",&v[i]);
    pas=1;
    while(pas)
    {
        ok=0;
        while(!ok&&l[pas]<n)
        {
            l[pas]++;
            if(valid(pas,l[pas]))
                ok=1;
        }
        if(ok==0) pas--;
        else
        {
            if(pas==n)
                {
                    pr=1;
                    for(i=1;i<=k;i++)
                        {
                            w=v[l[i]];
                            pr*=w;

                            }
                    p[++m]=pr;

                }
            else
            {
                pas++;
                l[pas]=0;
            }

        }
    }
    for(i=1;i<=m;i++)
        {
            z=p[i];
            w=m;
            x+=z/w;
        }
     printf("%lf",x);
    return 0;
}