Cod sursa(job #3367609)

Utilizator TimofeiFilipTimofei Filip Emanuel TimofeiFilip Data 8 octombrie 2026 21:23:35
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include<bits/stdc++.h>
using namespace std;

const int NMAX = 105;

ifstream fin("loto.in");
ofstream fout("loto.out");


int v[NMAX];

struct Triplet {
    int x, y, z;
};

unordered_map<int, Triplet> f;

void read_input(int &n, int &target_sum) {
    fin >> n >> target_sum;

    for (int i = 1; i <= n; i++)
        fin >> v[i];
}

void compute_sum_frequency(const int &n) {
    f.reserve(n * n * n);

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            for (int k = 1; k <= n; k++) {
                int sum = v[i] + v[j] + v[k];

                //if (f.find(sum) == f.end())
                    f[sum] = {v[i], v[j], v[k]};
            }
        }
    }
}

void compute_result(const int &n, const int &target_sum) {
    for (auto [sum, triplet]: f) {
        if (f.find(target_sum - sum) == f.end()) continue;
        Triplet triplet2 = f[target_sum - sum];
        fout << triplet.x << ' ' << triplet.y << ' ' << triplet.z << ' ' << triplet2.x << ' ' << triplet2.y << ' ' << triplet2.z << '\n';
        return;
    }
    fout << "-1\n";
}

int main() {
    fin.tie(nullptr);
    fout.tie(nullptr);
    ios_base::sync_with_stdio(false);

    int n, target_sum;

    read_input(n, target_sum);
    compute_sum_frequency(n);
    compute_result(n, target_sum);

    return 0;
}