Pagini recente » Cod sursa (job #1234807) | Cod sursa (job #903641) | Cod sursa (job #2730821) | Cod sursa (job #2359057) | Cod sursa (job #2462134)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("dezastru.in");
ofstream fout ("dezastru.out");
int n,m,v[30],ii;double p[30],sumap,produs,factorial;
int succesor (int k)
{
if(k<=m && v[k]<n)
{
v[k]++;
return 1;
}
return 0;
}
int valid (int k)
{
return 1;
}
int solutie (int k)
{
if(k==m)
return 1;
return 0;
}
void calculare (int k)
{
produs=1.0;
for(ii=1;ii<=k;++ii)
produs=produs*p[v[ii]];
sumap+=produs;
}
void backt ()
{
int i,k;
k=1;v[k]=0;
while(k>0)
{
i=0;
if(succesor(k))
i=1;
if(i==0)
k--;
else
{
if(k==m)
calculare(k);
else
k++,v[k]=v[k-1];
}
}
}
int main ()
{
int i;
fin>>n>>m;
for(i=1;i<=n;++i)
fin>>p[i];
factorial=1;
for(i=m+1;i<=n;++i)
factorial=factorial*i;
backt();
fout<<setprecision(6)<<sumap/factorial;
return 0;
}