Cod sursa(job #1621533)

Utilizator gorni97aaa aaa gorni97 Data 29 februarie 2016 19:47:45
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
fstream g("dezastru.out",ios::out);
int x[20],k,as,ev,n,k1;
float s=0,v[30];

void init()
{x[k]=0;}

void succesor()
{
    if(x[k]<n)
    {x[k]++;as=1;
    }else as=0;
}

void valid()
{ev=1;
if((x[k]<=x[k-1])&&(k>=2))
    ev=0;

}

int solutie()
{return (k==k1);}

void tipar()
{int i;
float p=v[x[1]];

    for(i=2;i<=k1;i++)
       p=p*v[x[i]];

       s=s+p;

}

int main()



{ fstream f("dezastru.in",ios::in);
int i,j,a[27][27];
f>>n>>k1;

for(i=1;i<=n;i++)
    {f>>v[i];
    a[i][0]=1;
    a[i][i]=1;}

a[0][0]=1;

    for(i=2;i<=n;i++)
    for(j=1;j<i;j++)
    a[i][j]=a[i-1][j]+a[i-1][j-1];

k=1;
init();


while(k>0)
{do{succesor();
if(as)
    valid();
}while((as)&&((!as)||(!ev)));
if(as)
    if(solutie())
    tipar();
else
{k++;init();}
else
    k--;
}

s=s/(a[n][k1]);
g<<fixed<<setprecision(6)<<s;
g.close();

}