Cod sursa(job #1503410)

Utilizator tudoras8tudoras8 tudoras8 Data 16 octombrie 2015 01:15:13
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>

using namespace std;

const int MAXN = 26;
int n, k, st[MAXN];
double p[MAXN], ans = 0;

void bt(int q) {
    for (int i = 1; i <= n; ++i) {
        st[q] = i;

        int valid = 1;
        for (int j = 1; j <= q - 1; ++j) {
            if (!(st[j] < st[q])) {
                valid = 0;
                break;
            }
        }
        if (valid) {
            if (q == k) {
                double lans = 1;
                for (int j = 1; j <= k; ++j) {
                    lans *= p[st[j]];
                }
                lans *= 2;
                ans += lans;
            } else {
                bt(q + 1);
            }
        }
    }
}

int main()
{
#ifdef LOCAL
    freopen("input", "r", stdin);
#else
    ifstream cin("dezastru.in");
    ofstream cout("dezastru.out");
#endif // LOCAL

    cin >> n >> k;
    for (int i = 1; i <= n; ++i) {
        cin >> p[i];
    }

    bt(1);
    for (int i = 1; i <= n; ++i) {
        ans /= i;
    }

    cout << ans;

    return 0;
}