Pagini recente » Cod sursa (job #2142508) | Cod sursa (job #1704409) | Cod sursa (job #2039513) | Cod sursa (job #974335) | Cod sursa (job #1908649)
#include <iostream>
#include <algorithm>
#include <iomanip>
#include <fstream>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int a[100];
double b[100];
double jmenar=0;
void afisare(int n,int a[])
{
int i;
double jmenarius;
jmenarius=1;
for(i=1;i<=n;i++)
jmenarius=b[a[i]]*jmenarius;
jmenar=jmenarius+jmenar;
}
void mi_next_aranjamentation(int i,int n,int k)
{
int maxx;
int v;
int j;
maxx=0;
for(j=1;j<=i-1;j++)
if(a[j]>maxx)
maxx=a[j];
for(int val=1+maxx;val<=n;val++)
{
a[i]=val;
for(v=1;v<=i;v++)
{
swap(a[v],a[i]);
if(i<k)
mi_next_aranjamentation(i+1,n,k);
else
afisare(k,a);
swap(a[v],a[i]);
}
}
}
int factorial(int n)
{
int i;
int p=1;
for(i=1;i<=n;i++)
p=p*i;
return p;
}
int main()
{
int n,k;
f>>n>>k;
int nr=factorial(n);
int i;
for(i=1;i<=n;i++)
{
f>>b[i];
a[i]=i;
}
mi_next_aranjamentation(1,n,k);
g<<fixed<<setprecision(6)<<jmenar/nr<<'\n';
return 0;
}