Pagini recente » Cod sursa (job #1512446) | Cod sursa (job #924896) | Cod sursa (job #2270472) | Cod sursa (job #2963192) | Cod sursa (job #2746317)
#include <bits/stdc++.h>
using namespace std;
void findNumbers(vector<int>& ar, int sum,
vector<vector<int> >& res, vector<int>& r,
int i)
{
if (sum == 0) {
res.push_back(r);
return;
}
while (i < ar.size() && sum - ar[i] >= 0) {
r.push_back(ar[i]);
findNumbers(ar, sum - ar[i], res, r, i);
i++;
r.pop_back();
}
}
vector<vector<int> > combinationSum(vector<int>& ar,
int sum)
{
sort(ar.begin(), ar.end());
ar.erase(unique(ar.begin(), ar.end()), ar.end());
vector<int> r;
vector<vector<int> > res;
findNumbers(ar, sum, res, r, 0);
return res;
}
ifstream fin("loto.in");
ofstream fout("loto.out");
bool ok = 0;
int n,sum,x;
int main()
{ fin>>n>>sum;
vector<int> ar;
for (int i = 0; i < n; i++){
fin>>x;
ar.push_back(x);
}
vector<vector<int> > res = combinationSum(ar, sum);
for (int i = 0; i < res.size(); i++) {
if (res[i].size() > 0&& res[i].size() < 7) {
ok = 1;
for (int j = 0; j < res[i].size(); j++)
fout << res[i][j] << " ";
return 0;
}
}
if (!ok){
fout<<-1;
}
return 0;
}