Pagini recente » Cod sursa (job #1876941) | Cod sursa (job #1582075) | Cod sursa (job #310511) | Cod sursa (job #2799309) | Cod sursa (job #3131907)
#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;
}