Cod sursa(job #63216)

Utilizator crawlerPuni Andrei Paul crawler Data 27 mai 2007 13:50:18
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <cstdio>
#include <bitset>

using namespace std;

double s[32], q, fact1,fact2;

void comb(int nr,int i,int n,int k,double tmp)
 {
  if(i<k)
   for(int j=nr+1;j<=n;++j) comb(j,i+1,n,k,tmp*s[j]);
    else
   q += tmp;
 }

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

  int n,k, i;

  scanf("%d%d",&n,&k);
  for(i=1;i<=n;++i)
   scanf("%lf",&s[i]);

  fact1 = fact2 = 1;
  for(i=2;i<=k;++i)
   fact1*=(double)i;
  for(i=2;i<=n;++i)
   fact2*=(double)i;

  fact1 /= fact2;

  for(i=1;i<=n;++i)
   comb(i,1,n,k,s[i]);

  printf("%.6f",(q*fact1)-0.0000005);

  return 0;
 }