Pagini recente » Cod sursa (job #1306619) | Cod sursa (job #607520) | Cod sursa (job #405244) | Cod sursa (job #753800) | Cod sursa (job #1001297)
#include <iostream>
#include <fstream>
#define nmax 25
using namespace std;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
int n,k,st[nmax],m,num=0;
float v[nmax],s=0,x;
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;
for (int i=1; i<=n; i++)
in >> v[i];
back(1);
out << s/num;
return 0;
}