Cod sursa(job #1231402)

Utilizator afkidStancioiu Nicu Razvan afkid Data 20 septembrie 2014 14:26:39
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <cstdio>

using namespace std;

int n,k,combinare[29],c[29][29];
double v[29],sum,m[29][29];

void backtrack(int i,int combinare[])
{
    if(i==k+1)
    {
        double p=1;
        for(int i=1;i<=k;++i)
            p*=v[combinare[i]];
        sum+=p;
        return;
    }
    for(int t=1;t<=n;++t)
    {
        bool valid=true;
        for(int l=1;l<i;++l)
        {
            if(combinare[l]>=t)
                valid=false;
        }
        if(valid==true)
        {
            combinare[i]=t;
            backtrack(i+1,combinare);
        }
    }

}

int main()
{
    sum=0.0;
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    scanf("%d %d",&n,&k);
    for(int i=1;i<=n;i++)
        scanf("%lf",&v[i]);
    for(int i=0;i<=n;++i)
    {
        c[i][0]=1; m[i][0]=1;
    }
    for(int i=1;i<=n;++i)
        for(int j=1;j<=k;++j)
            {
                c[i][j]=c[i-1][j-1]+c[i-1][j];
                m[i][j]=m[i-1][j]+v[i]*m[i-1][j-1];
            }
    printf("%d  ",c[n][k]);
    printf("%.6f",m[n][k]/(float)c[n][k]);
    return 0;
}