Cod sursa(job #195533)

Utilizator MciprianMMciprianM MciprianM Data 19 iunie 2008 15:28:35
Problema Dezastru Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<stdio.h>
int N, K;
double p[30];

double Pt;

long long cnk=1;

FILE *in, *out;
void Comb(int n, int k){
  int i;
  if((k<<1)<n)
    k=n-k, n-=k;
  for(i=k+1;i<=n;++i)
    cnk*=i;
  for(i=1;i<=n-k;++i)
    cnk/=i;
}

void back(int i, int x, double Pc){
  int j, l=N-K+i+2;
  if(i==K)
    Pt+=Pc;
    else
  for(j=x;j<l;++j)
   back(i+1, j+1, Pc*p[j]);
}
int main(){
  int  i;
  in=fopen("dezastru.in", "rt");
  fscanf(in,"%d%d",&N,&K);
  for(i=1;i<=N;i++)
    fscanf(in,"%lf",&p[i]);
  Comb(N,K);
  back(0,1,1);
  out=fopen("dezastru.out", "wt");
  fprintf(out,"%.8lf",Pt/cnk);
  fclose(out);
  return 0;
}