Cod sursa(job #3350058)

Utilizator MihneaStoicaMihnea Teodor Stoica MihneaStoica Data 5 aprilie 2026 09:38:48
Problema Loto Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.94 kb
#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;
}