Cod sursa(job #174363)

Utilizator jupanu92Anonim jupanu92 Data 8 aprilie 2008 20:05:55
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>

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

void citire(long i)
{
 if(i<=n)
   {scanf("%lf",&v[i]);
    citire(i+1);
    }
 }
unsigned validrec(unsigned i,unsigned k)
{
 if(i<k)
    if(s[i]==s[k])
      return 0;
      else
	return validrec(i+1,k);
   else return 1;
 }

 void back(long int k,long c)
{long int i;
   if(k==n+1)
    {double p=1;
     for(i=1;i<=c;i++)
	  p=p*v[s[i]];


     printf("\n");
     nr++;
     sf=sf+p;
     }
    else
      { for(i=1;i<=n;i++)
	   if(!util[i])
	   {s[k]=i;
	    util[i]=1;
	    back(k+1,c);
	    util[i]=0;
	     }
	 }
}


int main()
{
  freopen("dezastru.in","r",stdin);
  freopen("dezastru.out","w",stdout);
  scanf("%ld %ld",&n,&c);
  citire(1);
  sf=0;
  back(1,c);
  re=sf/nr;
  printf("%6lf ",re);                        

  return 0;
  }