Pagini recente » Cod sursa (job #2486946) | Cod sursa (job #1983587) | Cod sursa (job #2650876) | Cod sursa (job #1371072) | Cod sursa (job #3130166)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
bool generateTicket(int N, int S, const vector<int>& numbers, int currentIndex, int currentSum, vector<int>& chosenNumbers, vector<int>& result) {
if (currentSum == S && chosenNumbers.size() == 6) {
result = chosenNumbers;
return true;
}
if (currentSum > S || chosenNumbers.size() == 6 || currentIndex == N) {
return false;
}
chosenNumbers.push_back(numbers[currentIndex]);
if (generateTicket(N, S, numbers, currentIndex + 1, currentSum + numbers[currentIndex], chosenNumbers, result)) {
return true;
}
chosenNumbers.pop_back();
// Exclude the current number
if (generateTicket(N, S, numbers, currentIndex + 1, currentSum, chosenNumbers, result)) {
return true;
}
return false;
}
vector<int> findWinningTicket(int N, int S, const vector<int>& numbers) {
vector<int> chosenNumbers;
vector<int> result;
generateTicket(N, S, numbers, 0, 0, chosenNumbers, result);
return result;
}
int main() {
ifstream inputFile("loto.in");
ofstream outputFile("loto.out");
int N, S;
inputFile >> N >> S;
vector<int> numbers(N);
for (int i = 0; i < N; i++) {
inputFile >> numbers[i];
}
vector<int> winningTicket = findWinningTicket(N, S, numbers);
if (!winningTicket.empty()) {
for (int i = 0; i < 6; i++) {
outputFile << winningTicket[i] << " ";
}
} else {
outputFile << "-1";
}
inputFile.close();
outputFile.close();
return 0;
}