Pagini recente » Cod sursa (job #1858938) | Cod sursa (job #2318923) | Cod sursa (job #116181) | Cod sursa (job #3276580) | Cod sursa (job #727246)
Cod sursa(job #727246)
# include <iostream>
# include <fstream>
# include <iomanip>
# define Nmax 25
# define Egal(a,b) ((a)==(b)?true:false)
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int st[Nmax];
int n, k,nr = 0;
double prob = 0;
double pr[Nmax];
void citire ()
{
f >> n >> k;
for (int j=1; j<=n; j++)
{
f >> pr[j];
}
st[0] = 0;
f.close();
}
bool valid (int m)
{
if (st[m-1] >= st[m])
return false;
else
return true;
}
void calcul ()
{
double pr1 = pr[st[1]];
for (int j=2; j<=k; j++)
{
pr1 = (double) pr1 * pr[st[j]];
}
++nr;
prob += (double) pr1 * 2;
}
void scriere ()
{
g << setprecision (6) << prob / (nr * 2) << '\n';
g.close ();
}
void bktr (int niv)
{
for (int i=1; i<=n; i++)
{
st[niv] = i;
if (valid(niv))
{
if (niv == k)
calcul();
else
bktr(niv+1);
}
}
}
int main ()
{
citire();
bktr(1);
scriere();
return 0;
}