Cod sursa(job #2564827)

Utilizator antoniu200Alexa Sergiu antoniu200 Data 2 martie 2020 10:37:40
Problema Loto Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream cin("loto.in");
ofstream cout("loto.out");

struct elements_of_sum {
    unsigned e1, e2, e3;
    unsigned val;
};

elements_of_sum make_elements(unsigned e1, unsigned e2, unsigned e3, unsigned val) {
    elements_of_sum x;
    x.e1 = e1, x.e2 = e2, x.e3 = e3, x.val = val;
    return x;
}

bool operator<(elements_of_sum x, elements_of_sum y) {
    return x.val < y.val;
}

ostream& operator<<(ostream& strm, elements_of_sum x) {
    strm << x.e1 << " " << x.e2 << " " << x.e3;
    return strm;
}

int main() {
    unsigned out_of, sum;
    cin >> out_of >> sum;
    unsigned nums[out_of];
    for (unsigned i = 0; i < out_of; i++)
        cin >> nums[i];

    elements_of_sum sums[out_of * out_of * out_of] = {make_elements(0, 0, 0, 0)};
    unsigned sums_cntr = 0;
    for (unsigned i = 0; i < out_of; i++)
        for (unsigned j = i; j < out_of; j++)
            for (unsigned k = j; k < out_of; k++)
                sums[sums_cntr++] = make_elements(nums[i], nums[j], nums[k], nums[i] + nums[j] + nums[k]);

    sort(sums, sums + sums_cntr);
    for (unsigned i = 0; i < sums_cntr; i++)
        for (unsigned j = i; j < sums_cntr; j++)
            if (sums[i].val + sums[j].val == sum) {
                cout << sums[i] << " " << sums[j];
                return 0;
            }
    cout << "-1";
}