Cod sursa(job #945610)

Utilizator thewildnathNathan Wildenberg thewildnath Data 2 mai 2013 12:56:06
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<stdio.h>
double v[26],sol[26][26],c=1;

int main()
{
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    int n,k,i,j,aux;
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++)
        scanf("%lf",&v[i]);
    sol[0][0]=1;
    for(i=1;i<=25;i++)
    {
        sol[i][0]=1;
        for(j=1;j<=25;j++)
            sol[i][j]=sol[i-1][j]+sol[i-1][j-1]*v[i];
    }
    aux=n-k;
    for(i=k+1;i<=n;i++)
    {
        c=c*(double)i/(double)aux;
        if(aux>1)
            aux--;
    }
    printf("%lf\n",sol[n][k]/c);
    return 0;
}









/*#include<stdio.h>
int n,k,nr;
double v[26],sol;

void comb(int x,int p,double aux)
{
    int i;
    aux=aux*v[x];
    if(p==k)
    {
        nr++;
        sol=sol+aux;
        return ;
    }
    for(i=x+1;i<=n-(k-p)+1;i++)
        comb(i,p+1,aux);
}

int main()
{
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    int i;
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++)
        scanf("%lf",&v[i]);
    v[0]=1;
    comb(0,0,1);
    sol=(double)sol/nr;
    printf("%lf\n",sol);
    return 0;

}
*/