Cod sursa(job #641242)

Utilizator caen1c a e n caen1 Data 27 noiembrie 2011 17:10:15
Problema Dezastru Scor 50
Compilator c Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>

#define IN "dezastru.in"
#define OUT "dezastru.out"
#define N 26

double p[N], total;
int sol[N], pus[N], n, k;
unsigned long long nf;

void calcul(int);

int main(void) {

    int i;

    freopen(IN, "r", stdin); freopen(OUT, "w", stdout);

    scanf("%d %d", &n, &k);

    for(i = 1; i <= n; ++i)
        scanf("%lf", &p[i]);

    calcul(1);

    printf("%.6f\n", total / nf);

    return 0;
}

void calcul(int m) {

    int i;
    double aux;

    if(m == k + 1) {

        aux = 1;
        for(i = 1; i <= k; ++i)
            aux *= p[sol[i]];
        total += aux;
        ++nf;
    } else {

        for(i = 1; i <= n; ++i) {

            if(!pus[i]) {

                sol[m] = i;
                pus[i] = 1;
                calcul(m + 1);
                pus[i] = 0;
            }
        }
    }
}