Pagini recente » Cod sursa (job #2158906) | Cod sursa (job #897396) | Cod sursa (job #2097146) | Cod sursa (job #998092) | Cod sursa (job #1805176)
#include <fstream>
#include <iomanip>
using namespace std;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
int n, k,i, niv, nrsol=1, rep;
double prob[30], prod, probfinal;
int sol[30];
/*
int valid(int niv)
{
for (int i=1; i <niv; i++)
{
if ( sol[i] == sol[niv]) return false;
}
return true;
}
*/
void back(int niv)
{
if (niv == k+1)
{
/*
for (i=1; i <= k; i++)
{
out << sol[i] << ' ';
}
out << '\n';
*/
prod=1;
for (i=1; i <= k ; i++)
{
prod=prod*prob[sol[i]];
}
probfinal = probfinal + rep*(prod/nrsol);
}
else
{
if (niv > 1) sol[niv]=sol[niv-1];
else sol[niv]=0;
while (sol[niv] < n-k+niv)
{
sol[niv]++;
back(niv+1);
}
}
}
int main()
{
in >> n >> k;
for(i=1; i <= n; i++)
{
in >> prob[i];
}
for(i=1; i <= n; i++)
{
nrsol=nrsol*i;
}
rep=nrsol/n;
back(1);
out << setprecision(6);
out << probfinal;
return 0;
}