Cod sursa(job #1486943)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 15 septembrie 2015 19:18:30
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <iostream>
#include <fstream>
using namespace std;
int a[25],n,j,k,ev,sw,i;
double b[25],s=0,nr=0,p=1;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
void init()
{
    a[j]=0;
}
void succesor()
{
    ev=0;
    if(a[j]<n)
    {
        a[j]++;
        ev=1;
    }
}
void valid()
{
    sw=1;
    for(i=1;i<j;i++)
    {
        if(a[i]==a[j])
        {
            sw=0;
        }
    }
}
void bkt()
{
    j=1;
    init();
    while(j>0)
    {
        do
        {
            succesor();
            if(ev==1)
            {
                valid();
            }
        }
        while(ev==1 && sw==0);
        if(ev==1)
        {
            if(j==n)
            {
                nr++;
                for(i=1;i<=k;i++)
                {
                    p=p*b[a[i]];
                }
                s=s+p;
                p=1;
            }
            else
            {
                j++;
                init();
            }
        }
        else
        {
            j--;
        }
    }
}
int main()
{
    f>>n>>k;
    for(i=1;i<=n;i++)
    {
        f>>b[i];
    }
    bkt();
    g<<s/nr;
    return 0;
}