Pagini recente » Cod sursa (job #2450633) | Cod sursa (job #1604629) | Cod sursa (job #923666) | Cod sursa (job #2539175) | Cod sursa (job #3303287)
#include <bits/stdc++.h>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int n,k,sol[30];
double ans;
unsigned long long F[30];
double v[30];
bool valid(int x)
{
for(int i=1;i<x;i++)
if(sol[i]>sol[i+1]||sol[i]==sol[x])
return 0;
return 1;
}
bool solutie(int x)
{
return x==k;
}
void generare(int x)
{
for(int i=1;i<=n;i++)
{
sol[x]=i;
if(valid(x))
{
if(solutie(x))
{
double S=1;
for(int j=1;j<=x;j++)
{
S *= v[sol[j]];
}
ans +=( S / ( F[n] / F[n-k] ) * F[k]);
}
else
generare(x+1);
}
}
}
int main()
{
f>>n>>k;
for(int i=1;i<=n;i++)
f>>v[i];
F[0]=1;
F[1]=1;
for( unsigned long long i=2;i<=25;i++)
F[i] = F[i-1] * i;
generare(1);
g<<ans;
return 0;
}