Cod sursa(job #1486943)
| Utilizator | Data | 15 septembrie 2015 19:18:30 | |
|---|---|---|---|
| Problema | Dezastru | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.19 kb |
#include <iostream>
#include <fstream>
using namespace std;
int a[25],n,j,k,ev,sw,i;
double b[25],s=0,nr=0,p=1;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
void init()
{
a[j]=0;
}
void succesor()
{
ev=0;
if(a[j]<n)
{
a[j]++;
ev=1;
}
}
void valid()
{
sw=1;
for(i=1;i<j;i++)
{
if(a[i]==a[j])
{
sw=0;
}
}
}
void bkt()
{
j=1;
init();
while(j>0)
{
do
{
succesor();
if(ev==1)
{
valid();
}
}
while(ev==1 && sw==0);
if(ev==1)
{
if(j==n)
{
nr++;
for(i=1;i<=k;i++)
{
p=p*b[a[i]];
}
s=s+p;
p=1;
}
else
{
j++;
init();
}
}
else
{
j--;
}
}
}
int main()
{
f>>n>>k;
for(i=1;i<=n;i++)
{
f>>b[i];
}
bkt();
g<<s/nr;
return 0;
}
