Pagini recente » Cod sursa (job #729743) | Cod sursa (job #37848) | Cod sursa (job #1362792) | Cod sursa (job #281968) | Cod sursa (job #2376198)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int n,m,k,stiva[26],fact=1;
float pb,p[26];
int factorial(int k)
{
if(k<=n){fact=fact*k;factorial(k+1);}
else return fact;
}
int valid(int k)
{
for(int i=1;i<k;i++) if(stiva[i]==stiva[k]) return 0; return 1;
}
void bt(int k)
{
for(int i=1; i<=n; i++)
{
stiva[k]=i;
if(valid(k)==1)
if(k==m)
{
//for(int j=1;j<=m;j++) fout<<p[stiva[j]]<<" ";
float c=1;
for(int j=1; j<=m; j++) c=c*p[stiva[j]];
pb=pb+c;
//fout<<c/fact<<'\n';
}
else bt(k+1);
}
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++) fin>>p[i];
bt(1);
fout<<pb/factorial(1);
return 0;
}