Pagini recente » Cod sursa (job #1272133) | Documentatie | Rating Sirghe Andrei (str999) | Cod sursa (job #2464595) | Cod sursa (job #899262)
Cod sursa(job #899262)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int n,k,i,j,m,x,sol[30],as,ev;
float a[26],s,s1;
void init()
{sol[x]=0;
}
int succesor()
{
if(sol[x]<n)
{
sol[x]=sol[x]+1;return 1;
} else return 0;
}
int valid()
{
for(int p=1;p<x;p++)
if(sol[x]==sol[p]) return 0;
return 1;
}
int solutie()
{return x==n;
}
void tipar ()
{s1=1;
for(int p=1;p<=k;p++)
s1*=a[sol[p]];m++;
s+=s1;
}
void bkt()
{x=1;
init();
while(x>0)
{as=1;ev=0;
while(as&&!ev)
{as=succesor();
if(as) ev=valid();}
if(as)
if(solutie()) tipar();
else {x++;init();}
else x--;
}
}
int main()
{f>>n>>k;
for(i=1;i<=n;i++)
f>>a[i];
bkt();
g.precision(6);
g<<s/m;
f.close();
g.close();
}