Pagini recente » Cod sursa (job #1415138) | Cod sursa (job #3266532) | Cod sursa (job #273680) | Cod sursa (job #1513143) | Cod sursa (job #3131888)
#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("date.in");
ofstream output("date.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);
sort(tickets.begin(), tickets.end(), compareTickets);
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;
}