Cod sursa(job #2746317)

Utilizator Costin_PintilieHoratiu-Costin-Petru Pintilie Costin_Pintilie Data 27 aprilie 2021 18:03:13
Problema Loto Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb

#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;
}