Cod sursa(job #304996)

Utilizator dya_ndmNanuti Diana-Maria dya_ndm Data 15 aprilie 2009 22:18:11
Problema Dezastru Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
int n,k,j,l,st[26];
long long num=1;
float s,pr,p[26];

void numar()
{
int i;
for(i=1;i<=k;++i)
   num=num*(n-k+i);
}

int succesor()
{
if(st[j]<n)
  {
  st[j]++;
  return 1;
  }
return 0;
}

void solve()
{
int i;
pr=1;
for(i=1;i<=k;++i)
   pr=pr*p[st[i]];
s+=pr;
}

void backt()
{
int as;
j=1;
while(j>0)
     {
     as=succesor();
     if(as)
       {
       if(j==k)
           solve();
       else
         {++j;
         st[j]=st[j-1];
         }
       }
      else
         --j;
     }
}

int main()
{
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);

scanf("%d%d",&n,&k);

int i;

pr=1;
for(i=1;i<=n;++i)
   scanf("%f",&p[i]);

backt();
numar();
num=num/2;
s=s/num;
printf("%.6f\n",s);
return 0;
}