Pagini recente » Cod sursa (job #2340895) | Cod sursa (job #998002) | Cod sursa (job #2098144) | Cod sursa (job #1223264) | Cod sursa (job #2493334)
#include <bits/stdc++.h>
#include <iomanip>
using namespace std;
ifstream fin("dezastru.in");ofstream fout("dezastru.out");
vector<double>v;
vector<double>rez;
vector<double>::iterator it;
int n,k,st[30],nrp;
double val=0;
bool validare(int niv)
{
int i;
for(i=1;i<niv;i++)
{
if(st[niv]==st[i])
return 0;
}
return 1;
}
bool is_solutie(int niv)
{
if(niv==n)
return 1;
else
return 0;
}
void prd(int niv)
{
double p=1;
for(int i=1;i<=k;i++)
{
p*=(double)v[st[i]];
}
rez.push_back(p);
}
void bck(int niv)
{
int i;
for(i=1;i<=n;i++)
{
st[niv]=i;
if(validare(niv)==1)
{
if(is_solutie(niv)==1)
{
nrp+=1;
prd(niv);
}else
{
bck(niv+1);
}
}
}
}
int main()
{
fin>>n>>k;
v.push_back(0);rez.push_back(0);
for(int i=1;i<=n;i++)
{
double x;fin>>x;
v.push_back(x);
}
bck(1);
double s=0;
for(it=rez.begin()+1;it<rez.end();it++)
{
s+=(double)*it/nrp;
}
fout<<fixed<<setprecision(6)<<s;
}