Cod sursa(job #2894335)

Utilizator Stefan_MagureanuMagureanu Stefan Stefan_Magureanu Data 27 aprilie 2022 18:23:05
Problema Loto Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <fstream>
#include <unordered_map>
#include <tuple>
#include <vector>
#include <algorithm>


int main() {
    std::unordered_map<int, std::tuple<int, int, int>> posibilitati;
    std::ifstream fin("loto.in");
    std::vector<int> loterie;
    int n, s, x, sum;
    bool gasit_solutie = false;
    fin >> n >> s;
    for (int i = 0; i < n; i++) {
        fin >> x;
        loterie.push_back(x);
    }
    std::ofstream fout("loto.out");
    for (int i = 0; i < loterie.size(); i++) {
        for (int j = i; j < loterie.size(); j++) {
            for (int k = j; k < loterie.size(); k++) {
                sum = loterie[i] + loterie[j] + loterie[k];
                if (sum < s)
                    posibilitati[sum] = {i, j, k};
                if (posibilitati.find(s - sum) != posibilitati.end()) {
                    fout << loterie[i] << " " << loterie[j] << " " << loterie[k] << " "
                         << loterie[get<0>(posibilitati[s - sum])]
                         << " " << loterie[get<1>(posibilitati[s - sum])] << " "
                         << loterie[get<2>(posibilitati[s - sum])];
                    gasit_solutie = true;
                    break;
                }
                if (gasit_solutie)
                    break;
            }
        }
        if (gasit_solutie)
            break;
    }
    if (!gasit_solutie)
        fout << -1;
    return 0;
}