Cod sursa(job #1470958)

Utilizator dnprxDan Pracsiu dnprx Data 12 august 2015 18:34:05
Problema Dezastru Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>

using namespace std;

int n, st[30], k;
double a[50], solutie;

void Citire()
{
    int i;
    ifstream fin("dezastru.in");
    fin >> n >> k;
    for (i = 1; i <= n; ++i)
        fin >> a[i];
    fin.close();
}

int Comb( int n, int k )
{
    if (n == k || k == 0) return 1;
    if (n - k == 1 || k == 1) return n;
    return Comb( n - 1, k - 1 ) + Comb( n - 1, k );
}

void Calcul()
{
    int i;
    double prob = 1;
    for (i = 1; i <= k; i++)
        prob *= a[st[i]];
    solutie += prob;
}

void Back(int top)
{
    int i;
    if (top == k + 1) Calcul();
    else for (i = st[top-1] + 1; i <= n-k+top; ++i)
        {
            st[top] = i;
            Back(top + 1);
        }
}

void Afisare()
{
    ofstream fout("dezastru.out");
    solutie = solutie / Comb(n, k);
    fout << fixed << setprecision(6) << solutie << "\n";
    fout.close();
}

int main()
{
    Citire();
    Back(1);
    Afisare();
    return 0;
}