Cod sursa(job #975868)

Utilizator Athena99Anghel Anca Athena99 Data 21 iulie 2013 21:59:29
Problema Dezastru Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cassert>
#include <cstdio>

int n=0,k=0;
float sol=0,aux=0,v[30];
int a[30];

int f(int x)
{
    int i;
    if (x==k+1)
    {
        aux=1;
        for (i=1; i<=k; ++i)
            aux*=v[a[i]];
        sol+=aux;
    }
    else
    {
        for (i=a[x-1]+1; i<=n; ++i)
        {
            a[x]=i;
            f(x+1);
        }
    }
}

int main()
{
    int i=0;
    float nr=1;
    assert(freopen("dezastru.in","r",stdin));
    assert(freopen("dezastru.out","w",stdout));

    assert(scanf("%d%d",&n,&k));
    for (i=1; i<=n; ++i)
        assert(scanf("%f",&v[i]));
    f(1);

    nr=i=n;
    while (n-i<k-1)
    {
        --i;
        nr*=i;
    }

    sol+=sol;
    printf("%f\n",sol/nr);

    return 0;
}