Cod sursa(job #1824144)

Utilizator KanghuAndre Popescu Kanghu Data 7 decembrie 2016 14:04:20
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <iostream>

using namespace std;

double r;

int N, K;
int V[26];
int M[26];
double C[26];

void backtrack(int x)
{
    if(x == N)
    {
        double k =  1.0;

        for(int a = 0; a < K; a++)
        {
            int j = M[a];
            k = k * C[j];
        }

        r = r + k;
        return;
    }

    else
    {
        for(int a = 1; a <= N; a++)
        {
            if(V[a] != -1)
            {
                M[x] = V[a];
                V[a] = -1;

                backtrack(x + 1);

                V[a] = M[x];
            }
        }
    }
}

int main()
{
    ifstream i("dezastru.in");
    ofstream o("dezastru.out");

    i >> N >> K;

    for(int a = 1; a <= N; a++)
    {
        i >> C[a];
    }

    for(int a = 0; a <= N; a++)
    {
        V[a] = a;
    }

    backtrack(0);

    o << r / 6;

    return 0;
}