Cod sursa(job #2031769)

Utilizator dadadadaNUdada dada dadadadaNU Data 3 octombrie 2017 19:35:31
Problema Loto Scor 0
Compilator cpp Status done
Runda test_11 Marime 1.44 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

int n, s, s_verif, p, OK, VERIF, e = 1;
int v[110], a[10], q[110];


void backtracking (int k)
{
    if (OK == 0)
    {

        if (k == 7)
        {
            e = 1;
            s_verif = 0;

            for (int i = 1; i <= 6; i++)
            {
                s_verif = s_verif + a[i];
                q[a[i]] = 1;
            }

            for (int i = 1; i <= n; i++)
            {
                if (q[v[i]] == 0)
                {
                    e = 0;
                    break;
                }

                q[v[i]] = 0;
            }

            if(s_verif == s && e == 1)
            {
                VERIF = 1;

                for (int i = 1; i <= 6; i++)
                    out << a[i] << ' ';

                OK = 1;
            }

            if (s_verif > s)
                OK = 1;

        }

        else

        {
            for (int i = 1; i <= p; i++)
            {
                a[k] = v[i];

                backtracking(k + 1);
            }
        }

    }
}

int main()
{
    in >> n >> s;

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

        if (v[i] <= s - 5)
            v[++p] = v[i];
    }

    sort (v + 1, v + p + 1);

    backtracking (1);

    if (VERIF == 0)
        out << -1;

    return 0;
}