Pagini recente » Cod sursa (job #2384484) | Cod sursa (job #2485265) | Cod sursa (job #509864) | Cod sursa (job #2076245) | Cod sursa (job #1698688)
#include <iostream>
#include <fstream>
#include <deque>
#include <algorithm>
#include <set>
using namespace std;
int n, s;
deque<int> nrs;
ifstream in("loto.in");
ofstream out("loto.out");
void rec(deque<int> stak, int sum, bool &sol) {
int i, j, back;
if (stak.empty()) back = 0;
else back = stak.back();
if (stak.size() == 5) {
for (i=back; i<n && sum + nrs[i] < s; i++) {
}
if (i<n) {
sol = true;
multiset<int> order;
multiset<int>::iterator it;
for (j=0; j<6; j++) {
order.insert(stak[j]);
}
order.insert(stak[i]);
for (it = order.begin(); it != order.end(); it++) {
out<<nrs[*it]<<" ";
}
}
return;
}
for (i=back; i<n && sum + nrs[i] < s; i++) {
stak.push_back(i);
rec(stak, sum+nrs[i], sol);
if (sol) {
return;
}
stak.pop_back();
}
}
int main()
{
bool sol = false;
int i, x;
in>>n>>s;
for (i=0; i<n; i++) {
in>>x;
nrs.push_back(x);
}
sort(nrs.begin(), nrs.end());
deque<int> stak;
rec(stak, 0, sol);
if (!sol) {
out<<-1;
}
in.close();
out.close();
return 0;
}