Cod sursa(job #2894350)

Utilizator Stefan_MagureanuMagureanu Stefan Stefan_Magureanu Data 27 aprilie 2022 18:34:25
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 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");
    int loterie[101];
    int n, s, sum;
    bool gasit_solutie = false;
    fin >> n >> s;
    for (int i = 0; i < n; i++)
        fin >> loterie[i];
    std::ofstream fout("loto.out");
    for (auto i = 0; i < n; i++) {
        for (auto j = i; j < n; j++) {
            for (auto k = j; k < n; 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[std::get<0>(posibilitati[s - sum])]
                         << " " << loterie[std::get<1>(posibilitati[s - sum])] << " "
                         << loterie[std::get<2>(posibilitati[s - sum])];
                    gasit_solutie = true;
                }
                if (gasit_solutie)
                    break;
            }
            if (gasit_solutie)
                break;
        }
        if (gasit_solutie)
            break;
    }
    if (!gasit_solutie)
        fout << -1;
    return 0;
}