Pagini recente » Cod sursa (job #2794000) | Cod sursa (job #59446) | Cod sursa (job #2717088) | Cod sursa (job #1654294) | Cod sursa (job #1067326)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstdlib>
#include <vector>
#include <map>
using namespace std;
struct Node {
int a, b, c;
Node() {}
Node(int a, int b, int c) : a(a), b(b), c(c) {}
};
std::map<int, Node> sols;
int main()
{
ifstream in("loto.in");
ofstream out("loto.out");
int numbers[200];
int n, s;
in >> n >> s;
for (int i = 0; i < n; ++i) {
in >> numbers[i];
}
std::sort(numbers, numbers + n);
// Create first sums.
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
for (int k = 0; k < n; ++k) {
sols[numbers[i] + numbers[j] + numbers[k]] = Node(numbers[i], numbers[j], numbers[k]);
}
}
}
// Look them up and get a solution.
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
for (int k = 0; k < n; ++k) {
std::map<int, Node>::iterator it =
sols.find(s - numbers[i] - numbers[j] - numbers[k]);
if (it != sols.end()) {
// Write solution and quit.
std::vector<int> v;
v.push_back(numbers[i]);
v.push_back(numbers[j]);
v.push_back(numbers[k]);
v.push_back(it->second.a);
v.push_back(it->second.b);
v.push_back(it->second.c);
std::sort(v.begin(), v.end());
for (int w = 0; w < 6; ++w) {
out << (w == 0 ? "" : " ") << v[w];
}
out << std::endl;
out.close();
exit(0);
}
}
}
}
out << "-1\n";
out.close();
return 0;
}