Pagini recente » Cod sursa (job #697478) | Cod sursa (job #2638637) | Cod sursa (job #619536) | Cod sursa (job #819908) | Cod sursa (job #1368335)
#include <fstream>
#include<algorithm>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int i, st[28],n,p,nr=0;
double v[28],sum;
bool valid(int k)
{ int f[27];
for(int i=1;i<k;i++)
if(st[i]==st[k])
return false;
for(i=1;i<=k;i++)
f[i]=st[i];
sort(f+1,f+k);
/*for(i=1;i<=k;i++)
if(f[i]<st[i])
return false;*/
return true;
}
void scrie()
{ double prod=1.00;
for(int i=1;i<=p;i++)
prod*=v[st[i]];
sum+=prod;
nr+=1;
}
void back(int k)
{
for(int i=1;i<=n;i++)
{
st[k]=i;
if(valid(k))
if(k==n)
scrie();
else
back(k+1);
}
}
int main()
{
fin>>n;
fin>>p;
for(i=1;i<=n;i++)
fin>>v[i];
back(1);
fout<<sum/nr;
return 0;
}