Cod sursa(job #1698688)

Utilizator panteapaulPantea Paul panteapaul Data 5 mai 2016 00:48:15
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
#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;
}