Pagini recente » Borderou de evaluare (job #3320270) | Cod sursa (job #1323965) | Cod sursa (job #3258487) | Cod sursa (job #3330809) | Cod sursa (job #3328348)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <iomanip>
#define ll long long
// #define gout cout
// #define fin cin
using namespace std;
ifstream fin("dezastru.in");
ofstream gout("dezastru.out");
long double p=0,x;
int n,k;
void bck(vector<double>&v,vector<bool>&viz,vector<int>&r)
{
if(r.size()==k)
{
x=1;
for(auto i:r)x*=v[i];
p+=x;
}
else
{
for(int i=0; i<n; ++i)if(!viz[i])
{
viz[i]=1;
r.push_back(i);
bck(v,viz,r);
r.pop_back();
viz[i]=0;
}
}
}
ll factorial(int &n)
{
ll r=1;
for(ll i=1; i<=n; ++i)r*=i;
return r;
}
int main()
{
ios_base::sync_with_stdio(false);
fin.tie(0);
gout.tie(0);
fin>>n>>k;
vector<double>v(n);
vector<bool>viz(n,0);
vector<int>r;
for(int i=0; i<n; ++i)fin>>v[i];
bck(v,viz,r);
gout<<fixed<<setprecision(6)<<p/(long double)factorial(n);
return 0;
}