Pagini recente » Cod sursa (job #453565) | Cod sursa (job #1761807) | Cod sursa (job #1009144) | Cod sursa (job #2055070) | Cod sursa (job #1009037)
#include <fstream>
#include <iomanip>
#include <math.h>
#define Nmax 30
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int N,K,st[Nmax],used[Nmax],NrPerm;
double P[Nmax],S=0.0;
void Print()
{
for(int i=1;i<=K;++i)g<<st[i]<<' ';
g<<'\n';
}
void Back(int k,double produs)
{
if(k>K) S+=produs;//Print();}
else
for(int i=st[k-1]+1;i<=N;++i)
if(!used[i])
{
st[k]=i; used[i]=1;
Back(k+1,1.0*produs*P[i]);
used[i]=0;
}
}
int main()
{
f>>N>>K;
for(int i=1;i<=N;i++)f>>P[i];
Back(1,1.0);
for(int i=1;i<=K;i++)S*=i;
for(int i=N-K+1;i<=N;i++)S/=i;
g<<fixed<<setprecision(6)<<fabs(S)<<'\n';
f.close();g.close();
return 0;
}