Cod sursa(job #63181)

Utilizator floringh06Florin Ghesu floringh06 Data 27 mai 2007 12:12:30
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
//using namespace std;
#define nmax 26
#define kmax 26
#include<stdio.h>
#include<stdlib.h>

FILE *fin=fopen("dezastru.in","r"),
     *fout=fopen("dezastru.out","w");
     
int i,j,k,n;
float p[kmax],a[nmax][kmax];
float sol,sum;

int C(int n, int k)
 {
   if (n==1) return 0;
    else if(n==k) return 1;
     else if (k==1) return n;
        else 
         {
             return C(n-1,k) + C(n-1,k-1);
         }
 } 
 
 void solve()
 {
   int i,j;
   a[1][1]=p[1];
   for (i=1; i<=n; i++)
    {
      sum+=p[i];
      a[i][1]=sum;
    }
   for (i=1; i<=n; i++)
    for (j=2; j<=k; j++)   
     a[i][j]=a[i-1][j]+a[i-1][j-1]*p[i];
   sol=a[n][k]/C(n,k);  
  }   
 
int main()
{
  fscanf(fin,"%d%d",&n,&k);
  for (i=1; i<=n; i++)
     fscanf(fin,"%f",&p[i]);
  solve();
  fprintf(fout,"%f\n",sol);   
  fclose(fin);
  fclose(fout);
return 0;
}