Cod sursa(job #334806)

Utilizator mlazariLazari Mihai mlazari Data 28 iulie 2009 09:01:55
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>

#define NMAX 25

int n,k,i,j,nc,stop;
int c[NMAX];
float prob,pr,p[NMAX],pp[NMAX];

int main() {
  freopen("dezastru.in","r",stdin);
  freopen("dezastru.out","w",stdout);
  scanf("%d %d",&n,&k);
  for(i=0;i<n;i++) scanf("%f",p+i);
  for(i=0;i<k;i++) c[i]=i;
  pp[0]=p[0];
  for(i=1;i<k;i++) pp[i]=pp[i-1]*p[i];
  do {
    ++nc;
    prob+=pp[k-1];
    i=k-1;
    while((i>=0)&&(c[i]==i-k+n)) --i;
    if(i<0) stop=1;
    else {
      ++c[i];
      for(j=i+1;j<k;j++) c[j]=c[j-1]+1;
      if(i==0) pp[i++]=p[c[0]];
      for(j=i;j<k;j++) pp[j]=pp[j-1]*p[c[j]];
    }
  } while(!stop);
  prob/=nc;
  printf("%f",prob);
  return 0;
}