Pagini recente » Cod sursa (job #1325104) | Cod sursa (job #2189591) | Cod sursa (job #2457498) | Cod sursa (job #848611) | Cod sursa (job #2670405)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int N,K;
double V[30];
int SOL[30];
double rez;
int nr;
int verif(int a[])
{
int F[30]={0};
for(int i=1;i<=N;i++)
{
if(F[a[i]]>0) return 0;
F[a[i]]++;
}
return 1;
}
void g(int k)
{
if(k==N)
{
if(!verif(SOL)) return;
double p=(double)1;
for(int i=1;i<=K;i++)
{
p*=V[SOL[i]];
}
rez+=p;
nr++;
}
else
for(int i=1;i<=N;i++)
{
SOL[k+1]=i;
g(k+1);
}
}
int main()
{
fin >> N >> K;
for(int i=1;i<=N;i++)
fin >> V[i];
g(0);
fout << fixed << setprecision(6) << rez/(double)nr;
return 0;
}