Cod sursa(job #3131907)

Utilizator LazarDanielGabrielLazar Daniel-Gabriel LazarDanielGabriel Data 21 mai 2023 21:20:53
Problema Loto Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

bool found = false;

void findCombination(const vector<int>& numbers, vector<int>& combination, int index, int current_sum, int target_sum)
{
    if (combination.size() == 6 && current_sum == target_sum)
    {
        for (int i = 0; i < 6; i++)
        {
            fout << combination[i] << " ";
        }
        found = true;
        return;
    }

    if (index >= numbers.size() || current_sum > target_sum)
    {
        return;
    }

    // Alege numerele în ordine crescătoare
    for (int i = index; i < numbers.size(); i++)
    {
        combination.push_back(numbers[i]);
        findCombination(numbers, combination, i, current_sum + numbers[i], target_sum);
        combination.pop_back();

        if (found)
        {
            return;
        }
    }
}

int main()
{
    int N, S;
    fin >> N >> S;

    vector<int> numbers(N);
    for (int i = 0; i < N; i++)
    {
        fin >> numbers[i];
    }
    fin.close();

    sort(numbers.begin(), numbers.end());

    vector<int> combination;
    findCombination(numbers, combination, 0, 0, S);

    if (!found)
    {
        fout << -1;
    }

    fout.close();
    return 0;
}