Cod sursa(job #3131119)

Utilizator daria_lapadusLapadus Daria daria_lapadus Data 19 mai 2023 12:00:56
Problema Loto Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

bool gasesteBiletCastigator(const vector<int>& numere, int suma_tinta, vector<int>& bilet_curent, int index, ofstream& fisier_iesire) {
    if (suma_tinta == 0 && bilet_curent.size() == 6) {
        for (int numar : bilet_curent) {
            fisier_iesire << numar << " ";
        }
        return true;
    }

    if (suma_tinta < 0 || bilet_curent.size() >= 6 || index >= numere.size()) {
        return false;
    }

    for (int i = index; i < numere.size(); i++) {
        bilet_curent.push_back(numere[i]);
        if (gasesteBiletCastigator(numere, suma_tinta - numere[i], bilet_curent, i, fisier_iesire)) {
            return true;
        }
        bilet_curent.pop_back();
    }

    return false;
}

int main() {
    ifstream fisier_intrare("loto.in");
    ofstream fisier_iesire("loto.out");

    int N, S;
    fisier_intrare >> N >> S;

    vector<int> numere(N);
    for (int i = 0; i < N; i++) {
        fisier_intrare >> numere[i];
    }

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

    vector<int> bilet_curent;
    if (!gasesteBiletCastigator(numere, S, bilet_curent, 0, fisier_iesire)) {
        fisier_iesire << -1;
    }

    return 0;
}