Pagini recente » Cod sursa (job #989709) | Cod sursa (job #2513196) | Cod sursa (job #1857287) | Cod sursa (job #1835916) | Cod sursa (job #712227)
Cod sursa(job #712227)
#include<fstream>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int nrp,i,n,p,x[26];
float s,a[26];
int pc(int k)
{if(k<=p&&x[k]<n)
{++x[k];
return 1;
}
return 0;
}
int valid(int k)
{int i;
for(i=1;i<k;++i)
if(x[i]==x[k])
return 0;
return 1;
}
int sol(int k)
{if(k==p)
return 1;
return 0;
}
void afis(int k)
{int i;
float p;
p=1;
for(i=1;i<=k;++i)
p=p*a[x[i]];
nrp++;
s=s+p;
}
void back()
{int k,ok;
k=1;
x[k]=0;
while(k>0)
{ok=0;
while(ok==0&&pc(k))
if(valid(k))
ok=1;
if(ok==0)
--k;
else
if(sol(k))
afis(k);
else
{++k;
x[k]=x[k-1];
}
}}
int main()
{f>>n>>p;
for(i=1;i<=n;++i)
f>>a[i];
back();
s=s/nrp;
g<<s<<'\n';
f.close();
g.close();
return 0;
}