Cod sursa(job #191345)

Utilizator zalmanDanci Emanuel Sebastian zalman Data 26 mai 2008 10:51:37
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>
#define FIN "dezastru.in"
#define FOUT "dezastru.out"
#define dimST 25
#define dim1 100
int st[dimST],i,j,l,nr,n;
float v[dim1],sol;

void calc()
{
 float x=1;
 for(int i=1;i<=l;++i)
  x=x*v[st[i]]*1.0;
 sol+=x;
 nr++;
}

int valid(int k)
{
 for(register int i=1;i<k;++i)
  if(st[i]==st[k])
   return 0;
 return 1;
}

void back(int k)
{
 for(register int i=st[k-1]+1;i<=n;++i)
  {
	st[k]=i;

	  if(k==l)
	   {
		if(valid(k))
		 calc();
	   }
      else
     back(k+1);

  }
}

int main()
{
 freopen(FIN,"r",stdin);
 freopen(FOUT,"w",stdout);
 scanf("%d%d",&n,&l);
 for(register int i=1;i<=n;++i)
  scanf("%f",&v[i]);

  st[0]=0;
  back(1);
  sol=sol/nr*1.0;
  printf("%.6f",sol);
return 0;
}