Cod sursa(job #1921646)

Utilizator maria_sinteaMaria Sintea maria_sintea Data 10 martie 2017 13:40:07
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <cstdio>
#define N 30

using namespace std;

int n, k, v[N], nr, viz[N];
float d[N], s;

int posib(int n)
{
    int nf=1;
    for(int i=n;i>=2;i--)
            nf=nf*i;
    return nf;
}

float suma()
{
    float s=1.0;
    for(int i=0;i<k;i++)
        s*=d[v[i]];
    return s;
}

void bt(int k)
{
    if(k==n)
    {
        s+=suma()/nr;
        return;
    }
    for(int i=0;i<n;i++)
        if(!viz[i])
        {
            viz[i]=1;
            v[k]=i;
            bt(k+1);
            viz[i]=0;
        }
}

int main()
{
    freopen("dezastru.in", "r", stdin);
    freopen("dezastru.out", "w", stdout);

    scanf("%d %d\n", &n, &k);
    for(int i=0;i<n;i++)
        scanf("%f ", &d[i]);
    nr=posib(n);
    bt(0);
    printf("%f", s);
    return 0;
}