Cod sursa(job #2130130)

Utilizator papinub2Papa Valentin papinub2 Data 13 februarie 2018 14:15:59
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream in("dezastru.in");
ofstream out("dezastru.out");

const int Nmax = 25;

void Comb (int k, int&n, int&m, int&w, double&rez, vector<int>&c, vector<double>&v)
{
    if (k == m + 1)
    {
        double q = 1;
        for (int i = 1; i <= m; i++)
            q = q * v[c[i]];

        rez = rez + 2 * (q / w);

        return;
    }

    for (int i = c[k - 1] + 1; i <= n - m + k; i++)
    {
        c[k] = i;
        Comb(k + 1, n, m, w, rez, c, v);
    }
}

int main()
{
    int n, m;
    double rez = 0;
    vector<int> c(Nmax);
    vector<double> v(Nmax);

    in >> n >> m;
    int w = (n * (n + 1)) / 2;

    for (int i = 1; i <= n; i++)
        in >> v[i];

    Comb(1, n, m, w, rez, c, v);

    out << rez;
}