Cod sursa(job #1017174)

Utilizator nytr0gennytr0gen nytr0gen Data 27 octombrie 2013 13:46:56
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <cstdio>
#define N 26

using namespace std;

bool b[N];
int T = 0, s[N], k, n;
float S = 0, v[N];

void back(int l) {
    int i;

    if (l == k) {
        float p = 1;
        for (i = 1; i <= k; ++i)
            p *= v[s[i]];
        S += p; ++T;
    }
    else if (l < k) {
        for (i = 1; i <= n; ++i) {
            if (b[i]) {
                b[i] = 0;
                s[l+1] = i;
                back(l+1);
                b[i] = 1;
            }
        }
    }
}

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

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

    back(0);

    printf("%.*f", 6, S/T);

    return 0;
}