Pagini recente » Cod sursa (job #2023671) | Cod sursa (job #3336400) | Diferente pentru aib intre reviziile 20 si 26 | Cod sursa (job #3335060) | Cod sursa (job #3350058)
#pragma GCC optimize("Ofast,unroll-loops")
#include <bits/stdc++.h>
using namespace std;
using uint = unsigned int;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
#if 1
#define int ll
#define uint ull
#endif
/**
*!Problem: Loto
* URL: https://infoarena.ro/problema/loto
* TL: 90 ms
* ML: 64 MB
*
* Good Luck!
*/
inline void init() {
int n, s;
cin >> n >> s;
vector<int> v(n + 1);
for (int i = 1; i <= n; i++) { cin >> v[i]; }
sort(v.begin() + 1, v.end());
map<int, tuple<int, int, int>> mp;
for (int i = 1; i <= n && v[i] + v[i] + v[i] <= s; i++) {
for (int j = i; j <= n && v[i] + v[j] + v[j] <= s; j++) {
for (int k = j; k <= n && v[i] + v[j] + v[k] <= s; k++) {
if (mp.find(v[i] + v[j] + v[k]) == mp.end())
mp[v[i] + v[j] + v[k]] = {i, j, k};
}
}
}
for (int i = 1; i <= n && v[i] + v[i] + v[i] <= s; i++) {
for (int j = i; j <= n && v[i] + v[j] + 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];
if (mp.find(s - sum) != mp.end()) {
tuple<int, int, int> t = mp[s - sum];
vector<int> rasp = {v[i], v[j], v[k],
get<0>(t), get<1>(t), get<2>(t)};
sort(rasp.begin(), rasp.end());
for (auto x : rasp) cout << x << " ";
cout << '\n';
return;
}
}
}
}
cout << -1 << '\n';
}
inline void tc() {}
#define FIO 1
#define FILE "loto"
signed main() {
#if FIO
freopen(FILE ".in", "r", stdin);
freopen(FILE ".out", "w", stdout);
#endif
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
init();
int tt;
if (!(cin >> tt)) return 0;
while (tt--) tc();
return 0;
}