Pagini recente » Cod sursa (job #1090729) | Cod sursa (job #2979777) | Cod sursa (job #230790) | Cod sursa (job #315290) | Cod sursa (job #1974348)
#include <iostream>
#include <fstream>
#include <map>
#include <algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
struct Triple {
int a, b, c;
};
int n, s, v[105];
map<int, Triple> h;
bool found;
int main() {
in >> n >> s;
for (int i = 1; i <= n; ++i) in >> v[i];
sort(v + 1, v + n + 1);
for (int i = 1; i <= n; ++i) {
for (int j = i; j <= n && v[i] + v[j] <= s; ++j) {
for (int k = j; k <= n && v[i] + v[j] + v[k] <= s; ++k) {
int sum = v[i] + v[j] + v[k];
Triple t;
t.a = v[i];
t.b = v[j];
t.c = v[k];
h[sum] = t;
}
}
}
for (int i = 1; i <= n; ++i) {
for (int j = i; j <= n && v[i] + v[j] <= s; ++j) {
for (int k = j; k <= n && v[i] + v[j] + v[k] <= s; ++k) {
int sum = v[i] + v[j] + v[k];
int dif = s - sum;
if (h.find(dif) != h.end()) {
out << v[i] << " " << v[j] << " " << v[k] << " " << h[dif].a << " " << h[dif].b << " " << h[dif].c;
found = true;
break;
}
}
if (found) break;
}
if (found) break;
}
if (!found) {
out << -1;
}
return 0;
}