Cod sursa(job #173681)

Utilizator jupanu92Anonim jupanu92 Data 7 aprilie 2008 22:35:54
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
#include<math.h>

long s[30],n,c,k,nr=0;
double  v[800001],p,sfa[800001],sf,re;

void citire(long i)
{
 if(i<=n)
   {scanf("%lf",&v[i]);
    citire(i+1);
    }
 }

 void back(long int k,double p)
{long int i,j;

 int ok;
 if(k==c)
    {for(i=1;i<=c;i++)
	p=p*v[s[i]];

     nr++;
     sfa[nr]=p;
     }
    else
      { for(i=1;i<=n;i++)
	     {ok=1;
	      for(j=1;j<=k;j++)
		  if(s[j]==i)
		     {ok=0;
		       break;
		       }
	      if(ok)
		{s[k+1]=i;
		  back(k+1,p);
		 }
	      }
	 }
}


int main()
{
  freopen("dezastru.in","r",stdin);
  freopen("dezastru.out","w",stdout);
  scanf("%ld %ld",&n,&c);
  citire(1);
  back(0,1);
  sf=0;
  for(int i=1;i<=nr;i++)
    sf=sfa[i]+sf;

  re=sf/nr;
  printf("%6lf ",re);

  return 0;
  }