Cod sursa(job #1743730)

Utilizator SolcanMihaiSolcan Mihai Andrei SolcanMihai Data 18 august 2016 17:02:59
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <cstdio>
#include <vector>

using namespace std;

int n, m;
int sol[30];
#define sol (sol+1)
double procente[30];
vector<double> elementeMedie;

void citire()
{
    scanf("%d %d", &n, &m);

    for(int i = 0; i < n; i++)
    {
        scanf("%lf", &procente[i]);
    }
}

void backtracking(int k)
{
    if(k == m)
    {
        double tmp = 1;

        for(int i = 0; i < m; i++)
        {
            double tmpx = procente[sol[i] - 1];

            tmp *= tmpx;
        }

        elementeMedie.push_back(tmp);
    }
    else
    {
        for(int i = sol[k - 1] + 1; i <= n; i++)
        {
            sol[k] = i;
            backtracking(k + 1);
        }
    }
}

void afisare()
{
    int l = elementeMedie.size();

    double suma = 0;

    for(int i = 0; i < l; i++)
    {
        suma += elementeMedie[i];
    }

    printf("%lf", suma / l);
}

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

    citire();
    backtracking(0);
    afisare();


    return 0;
}