Cod sursa(job #253322)

Utilizator 630r63Ilinca George Mihai 630r63 Data 5 februarie 2009 17:50:44
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
 #include <cstdio>  
   
 int N,K;  
 double dp[26][26],p[26];  
   
 int main()  
 {  
  freopen("dezastru.in","r",stdin);  
  freopen("dezastru.out","w",stdout);  
   
  scanf("%d%d",&N,&K);  
   
  for(int i = 1; i <= N ; ++i)  
   scanf("%lf",&p[i]);  
   
  for(int j = 0; j <= N; ++j)  
   dp[0][j] = 1;  
   
  for(int i = 1; i <= K; ++i)  
   for(int j = 1; j <= N; ++j)  
    dp[i][j] = dp[i-1][j-1] * p[j] + dp[i][j-1];  
   
  double sol = dp[K][N];  
  for(int i = 2; i <= N - K; ++i)  
    sol *= (double)i;  
    
  for(int i = K + 1; i <= N; ++i)  
    sol /= (double)i;  
   
  printf("%.6lf",sol);  
   
  return 0;  
}