Pagini recente » Cod sursa (job #2046459) | Cod sursa (job #2021368) | Cod sursa (job #2200848) | Cod sursa (job #474482) | Cod sursa (job #201422)
Cod sursa(job #201422)
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
double prob[26];
int mask[26];
double c = 0;
int k;
int n;
double valoare;
void aranj(int p)
{
if(p >= k)
{
//vector<int> v;
//for(int i=0;i<k;++i)
// v.push_back(mask[i]);
//do {
double pr = 1;
for(int i=0;i<k;++i)
pr *= prob[mask[i]];
valoare += pr;
++c;
//}while(next_permutation(v.begin(), v.end()));
return;
}
int s=(p==0)?0:(mask[p-1]+1);
for(int i=s;i<n;++i)
{
mask[p] = i;
aranj(p+1);
}
}
int main(void)
{
freopen("dezastru.in", "r", stdin);
freopen("dezastru.out", "w", stdout);
cin >> n >> k;
for(int i=0;i<n;++i)
{
cin >> prob[i];
}
aranj(0);
cout << valoare / c << endl;
return 0;
}