Cod sursa(job #3131896)

Utilizator LazarDanielGabrielLazar Daniel-Gabriel LazarDanielGabriel Data 21 mai 2023 21:07:08
Problema Loto Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
vector<int> chosen_numbers;

bool generate_ticket(const vector<int>& numbers, int current_sum, int target_sum, int index) {
    if (chosen_numbers.size() == 6 && current_sum == target_sum) {
        return true;
    }
    if (current_sum > target_sum || chosen_numbers.size() > 6) {
        return false;
    }
    for (int i = index; i < numbers.size(); i++) {
        chosen_numbers.push_back(numbers[i]);
        if (generate_ticket(numbers, current_sum + numbers[i], target_sum, i)) {
            return true;
        }
        chosen_numbers.pop_back();
    }
    return false;
}

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

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

    // Generăm biletul
    if (generate_ticket(numbers, 0, S, 0)) {
        // Scriem rezultatul în fișierul de ieșire
        for (int i = 0; i < chosen_numbers.size(); i++) {
            fout << chosen_numbers[i] << " ";
        }
        fout << "\n";
        fout.close();
    } else {
        // Nu se poate obține un bilet castigator
        ofstream fout("loto.out");
        fout << "-1\n";
        fout.close();
    }

    return 0;
}