Cod sursa(job #1095367)

Utilizator roby2001Sirius roby2001 Data 30 ianuarie 2014 19:53:53
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
/*
          ~Keep It Simple!~
*/
    
#include <stdio.h>
 
#define MaxN 26
 
float v[MaxN],M[MaxN][MaxN],A[MaxN][MaxN],Pback,PDyn,cnt;
int st[MaxN],N,K;
 
void Afisare()
{
    float aux=1;
    for(int i=1; i<=K; i++)
        aux*=v[st[i]];
    Pback+=aux;
    cnt++;
}
 
void back(int k)
{
    int i;
    for(i = st[k-1] + 1; i<=N; i++)
    {
        st[k] = i;
          if( k == K )
          {
              Afisare();
          }
          else if( k<K )
              back(k+1);
    }
}
 
void ComputeDyn()
{
	for(int i=0; i<=N; i++)
		M[i][0] = A[i][0] = 1;

	for(int i=1; i<=N; i++)
		for(int j=1; j<=i; j++)
		{
			A[i][j] = A[i-1][j-1] + A[i-1][j];
			M[i][j] = M[i-1][j] + M[i-1][j-1] * v[i];
		}

	printf("%f",M[N][K]/A[N][K]);
}

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("%f",&v[i]);
 

	ComputeDyn();
}