Cod sursa(job #37894)

Utilizator rurutzairimia ruxandra maria rurutza Data 25 martie 2007 13:01:08
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<fstream.h>
#include<iomanip.h>
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int nr,i,m,n,x[100];
float a[100],s;
int succ(int k)
{
if(k<=m&&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==m)
return 1;
return 0;
}
void suma(int k)
{
int i;
float p;
p=1;
for(i=1;i<=k;i++)
p=p*a[x[i]];
s=s+p;
nr++;
}
void back()
{
int i,k;
k=1;
x[k]=0;
while(k)
{
i=0;
while(i==0&&succ(k))
if(valid(k))
i=1;
if(i==0)
k--;
else
if(sol(k))
suma(k);
else
{
k++;
x[k]=0;
}
}
}
int main()
{
f>>n>>m;
nr=0;
s=0;
for(i=1;i<=n;i++)
f>>a[i];
back();
g<<setprecision(6)<<s/nr;
f.close();
g.close();
return 0;
}