Pagini recente » Cod sursa (job #536035) | Cod sursa (job #2809153) | Cod sursa (job #2142102) | Cod sursa (job #65676) | Cod sursa (job #3131896)
#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;
}