Pagini recente » Cod sursa (job #864686) | Cod sursa (job #203523) | Cod sursa (job #1361165) | Cod sursa (job #123408) | Cod sursa (job #1974317)
#include <iostream>
#include <fstream>
#include <map>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
struct Triple {
long long a, b, c;
};
class Cmp {
public:
bool operator()(int a, int b) {
return a < b;
}
};
long long n, s, v[101];
map<int, Triple, Cmp> h;
int main() {
in >> n >> s;
for (int i = 1; i <= n; ++i) in >> v[i];
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;
}
}
}
bool found = false;
for (int i = 1; i <= n && !found; ++i) {
for (int j = i; j <= n && v[i] + v[j] <= s && !found; ++j) {
for (int k = j; k <= n && v[i] + v[j] + v[k] <= s && !found; ++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] << " ";
out << h[dif].a << " " << h[dif].b << " " << h[dif].c;
found = true;
}
}
}
}
if (!found) {
out << -1;
}
return 0;
}