Pagini recente » Diferente pentru problema/inghetare intre reviziile 29 si 30 | Cod sursa (job #1309264) | Cod sursa (job #2619009) | Monitorul de evaluare | Cod sursa (job #3303290)
#include <bits/stdc++.h>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int n,k,sol[30];
double ans;
double v[30],F[30];
bool valid(int x)
{
return 1;
}
bool solutie(int x)
{
return x==k;
}
void generare(int x)
{
for(int i=sol[x-1]+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<=n;i++)
F[i] = F[i-1] * i;
generare(1);
g<<fixed<<setprecision(6)<<ans;
return 0;
}