Cod sursa(job #204501)

Utilizator mika17Mihai Alex Ionescu mika17 Data 24 august 2008 18:13:04
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <cstdio>

int N,K,a[25];
bool v[26];
double p[26] , sol;
unsigned long long nf;

void calcProb()
{
 double pd = 1.0;
 for(int i = 0; i < K ; ++i)
   pd *= p[a[i]];   //fprintf(stderr,"%lf ",pd);
 sol += pd;
}

void aranj(int t)
{
 if(t==K) nf++ , calcProb();
  else
   for(int i = 1; i<= N ; ++i)
    if(!v[i])
    {
     a[t] = i; v[i] = 1; aranj(t+1); v[i] = 0;
    }
}

void writeSol()
{
 sol *= 1.0/nf;
 printf("%lf",sol);
}

int main()
{
 freopen("dezastru.in","r",stdin);
 freopen("dezastru.out","w",stdout);
 scanf("%d %d",&N,&K);
 for(int i = 1; i <= N ; ++i)
  scanf("%lf",&p[i]);
 aranj(0);
 writeSol();
 return 0;
}