Pagini recente » Cod sursa (job #1775293) | Cod sursa (job #2247415) | Cod sursa (job #2589302) | Cod sursa (job #1649186) | Cod sursa (job #1522650)
#include <cstdio>
#include <iostream>
#include <set>
#include <climits>
#include <map>
#include <algorithm>
#include <list>
#include <vector>
#include <utility>
using namespace std;
int main() {
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(0);
int n, s;
set<int> u, d, t;
cin >> n >> s;
for (int i = 0; i < n; i++) {
int aux;
cin >> aux;
u.insert(aux);
}
for (set<int>::iterator it = u.begin(); it != u.end(); it++) {
for (set<int>::iterator jt = u.begin(); jt != u.end(); jt++) {
d.insert(*it + *jt);
}
}
for (set<int>::iterator it = u.begin(); it != u.end(); it++) {
for (set<int>::iterator jt = d.begin(); jt != d.end(); jt++) {
t.insert(*it + *jt);
}
}
for (set<int>::iterator it = t.begin(); it != t.end(); it++) {
if (t.find(s - *it) != t.end()) {
int s1 = *it;
for (set<int>::iterator jt = u.begin(); jt != u.end(); jt++) {
if (d.find(s1 - *jt) != d.end()) {
int s3 = s1 - *jt;
for (set<int>::iterator kt = u.begin(); kt != u.end(); kt++) {
if (u.find(s3 - *kt) != u.end()) {
cout << *kt << " " << s3 - *kt << " " << *jt << " ";
goto S2;
}
}
}
}
S2:
s1 = s - s1;
for (set<int>::iterator jt = u.begin(); jt != u.end(); jt++) {
if (d.find(s1 - *jt) != d.end()) {
int s3 = s1 - *jt;
for (set<int>::iterator kt = u.begin(); kt != u.end(); kt++) {
if (u.find(s3 - *kt) != u.end()) {
cout << *kt << " " << s3 - *kt << " " << *jt << " ";
return 0;
}
}
}
}
}
}
cout << -1;
return 0;
}