Cod sursa(job #1490893)

Utilizator andi12Draghici Andrei andi12 Data 24 septembrie 2015 13:07:13
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>

using namespace std;
double v[26],s,ras;
int sol[26];
int mat[26][26];
int n,k;
FILE *in,*out;
void fc()
{
    double p=1;
    int i;
    for(i=1;i<=k;i++)
        p=p*v[sol[i]];
    s=s+p;
}
void bkt(int p)
{
    if(p-1==k)
        fc();
    else
    {
        for(int i=sol[p-1];i<n;i++)
        {
            sol[p]=i+1;
            bkt(p+1);
        }
    }
}
int main()
{
    in=fopen("dezastru.in","r");
    out=fopen("dezastru.out","w");
    int i,j;
    fscanf(in,"%d%d",&n,&k);
    for(i=1;i<=n;i++)
        fscanf(in,"%lf",&v[i]);
    bkt(1);
    /*for(j=1;j<=n;j++)
        mat[j][j]=1;*/
    for(i=1;i<=n;i++)
        mat[i][0]=1;
    mat[0][0]= 1;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
            mat[i][j]=mat[i-1][j]+mat[i-1][j-1];
    }
    ras=s/(double)mat[n][k];
    fprintf(out,"%.6lf",ras);
    return 0;
}