Cod sursa(job #539921)

Utilizator SadmannCornigeanu Calin Sadmann Data 23 februarie 2011 14:56:48
Problema Dezastru Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<stdio.h>
FILE *in,*out;
int n,k,s[20],i;
float pm[20];
float impk=1,imp=1;
float raport;
void back(int);

int main()
{
    in=fopen("dezastru.in","rt");
    out=fopen("dezastru.out","wt");
    fscanf(in,"%d %d",&n,&k);
    for(i=1;i<=n;i++)
        fscanf(in,"%f",&pm[i]);
    for(i=2;i<=k;i++)
        impk*=i;
    for(i=n-k+1;i<=n;i++)
        imp*=i;
    imp=imp/impk;
    back(0);
    raport/=imp;
    fprintf(out,"%lf",raport);
}

void back(int l)
{
    int i;
    if(l==k)
    {
        float aux=1;
        for(i=1;i<=k;i++)
            aux*=pm[s[i]];
        raport+=aux;
    }
    else
    {
        for(i=s[l]+1;i<=n;i++)
        {
            s[l+1]=i;
            back(l+1);
        }
    }
}