Cod sursa(job #3131897)

Utilizator bobic.teona20Bobic Teona-Christiana bobic.teona20 Data 21 mai 2023 21:07:24
Problema Loto Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

struct Ticket {
    long x, y, z, s;
};

bool compareTickets(const Ticket& a, const Ticket& b) {
    return a.s < b.s;
}

vector<Ticket> generateTickets(const vector<long>& numbers) {
    vector<Ticket> tickets;
    for (size_t i = 0; i < numbers.size(); ++i) {
        for (size_t j = 0; j < numbers.size(); ++j) {
            for (size_t k = 0; k < numbers.size(); ++k) {
                tickets.push_back({numbers[i], numbers[j], numbers[k], numbers[i] + numbers[j] + numbers[k]});
            }
        }
    }
    return tickets;
}

int main() {
    ifstream input("loto.in");
    ofstream output("loto.out");

    long N, S;
    input >> N >> S;

    vector<long> numbers(N);
    for (long i = 0; i < N; ++i)
        input >> numbers[i];

    input.close();

    vector<Ticket> tickets = generateTickets(numbers);

    for (size_t i = 0; i < tickets.size(); ++i) {
        if (tickets[i].s <= S - tickets[i].s) {
            auto it = lower_bound(tickets.begin(), tickets.end(), Ticket{0, 0, 0, S - tickets[i].s}, compareTickets);
            if (it != tickets.end() && it->s == S - tickets[i].s) {
                output << it->x << " " << it->y << " " << it->z << " "
                       << tickets[i].x << " " << tickets[i].y << " " << tickets[i].z << endl;
                output.close();
                return 0;
            }
        }
    }

    output << -1 << endl;
    output.close();

    return 0;
}