Pagini recente » Cod sursa (job #1518374) | Cod sursa (job #699697) | Cod sursa (job #101208) | Cod sursa (job #1917212) | Cod sursa (job #1025510)
#include <iostream>
#include <fstream>
#include <iomanip>
#define nmax 25
using namespace std;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
int n,k,st[nmax],m,num=0;
double v[nmax],s=0,x,f;
void work(){
x=1;
for (int i=1; i<=m; i++)
x*=v[st[i]];
s+=x;
}
bool val(int k){
for (int i=1; i<k; i++)
if (st[k]==st[i]) return false;
return true;
}
void back(int k){
for (int i=1; i<=n; i++){
st[k]=i;
if (val(k) && st[k]>st[k-1]){
if (st[1]>n-m+1) break;
if (k==m) num++, work();
else back(k+1);
}
}
}
int main()
{
in >> n >> m;
out << setprecision(6);
for (int i=1; i<=n; i++)
in >> v[i];
back(1);
f=s/num;
out << f;
return 0;
}