Cod sursa(job #292465)

Utilizator PavelRazvanPavel Razvan PavelRazvan Data 31 martie 2009 10:30:40
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
int a[101],n,m,k2;
double sum,b[101],prod;
int check (int k,int y)
{
    int j;
    for(j=1;j<k;++j)
    if(a[j]==y)
    return 0;
    return 1;
}
void back (int k)
{
    int i;
    if(k==n+1)
    {
        prod=1;
        for(i=1;i<=m;++i)
            prod*=b[a[i]];
        sum+=prod;
    }
    else
    {
        for(i=1;i<=n;++i)
        if(check(k,i)==1)
        {
            a[k]=i;
            back(k+1);
        }
    }
}
int fact (int n)
{
    int p=1,i;
    for(i=2;i<=n;++i)
        p*=i;
    return p;
}
int main ()
{
    int i;
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;++i)
        scanf("%lf",&b[i]);
    back(1);
    printf("%.6lf",sum/fact(n));
    return 0;
}