Pagini recente » Cod sursa (job #1048415) | Cod sursa (job #2116108) | Cod sursa (job #998304) | Cod sursa (job #3309787) | Cod sursa (job #2260853)
#include <cstdio>
#include <vector>
#include <algorithm>
#define pb push_back
using namespace std;
vector <int> v, p ;
int s1, s2 ;
int n, S ;
bool ok ;
void findS() {
int st = 0, dr = p.size() - 1 ;
while (st <= dr) {
while (p[st] + p[dr] > S)
dr -- ;
if (p[st] + p[dr] == S) {
s1 = p[st] ;
s2 = p[dr] ;
return ;
}
st ++ ;
}
}
int main() {
freopen("loto.in", "r", stdin) ;
freopen("loto.out", "w", stdout) ;
int a, i, j, k ;
scanf("%d %d", &n, &S) ;
for (i = 0 ; i < n ; ++ i) {
scanf("%d", &a) ;
v.pb(a) ;
}
for (i = 0 ; i < n ; ++ i) {
for (j = 0 ; j < n ; ++ j) {
for (k = 0 ; k < n ; ++ k)
p.pb(v[i] + v[j] + v[k]) ;
}
}
sort(p.begin(), p.end()) ;
findS() ;
if (!s1 && !s2) {
printf("-1") ;
return 0 ;
}
for (i = 0 ; i < n && ok == 0 ; ++ i) {
for (j = 0 ; j < n && ok == 0 ; ++ j) {
for (k = 0 ; k < n && ok == 0 ; ++ k) {
if (v[k] + v[j] + v[i] == s1) {
ok = 1 ;
printf("%d %d %d ", v[i], v[j], v[k]) ;
}
}
}
}
ok = 0 ;
for (i = 0 ; i < n && ok == 0 ; ++ i) {
for (j = 0 ; j < n && ok == 0 ; ++ j) {
for (k = 0 ; k < n && ok == 0 ; ++ k) {
if (v[k] + v[j] + v[i] == s2) {
ok = 1 ;
printf("%d %d %d ", v[i], v[j], v[k]) ;
}
}
}
}
return 0;
}