Cod sursa(job #2733083)

Utilizator icnsrNicula Ionut icnsr Data 29 martie 2021 20:54:58
Problema Loto Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <fstream>
std::ifstream fin("loto.in");
std::ofstream fout("loto.out");
#include <vector>
#include <algorithm>
#include <unordered_map>
#include <tuple>

#include <unordered_map>

int main()
{
    unsigned N;
    int S;
    fin >> N >> S;

    std::vector<int> vec;
    vec.reserve(N);
    for(unsigned i = 0; i < N; ++i)
    {
        int value;
        fin >> value;
        vec.push_back(value);
    }

    std::unordered_map<int, std::pair<unsigned char, unsigned char>> sums;

    for(unsigned i = 0; i < N; ++i)
    {
        for(unsigned j = 0; j < N; ++j)
        {
            sums[vec[i] + vec[j]] = {i, j};
        }
    }

    for(auto el1 : sums)
    {
        const auto& sum1 = el1.first;
        const auto& p1 = el1.second;

        for(auto el2 : sums)
        {
            const auto& sum2 = el2.first;
            const auto& p2 = el2.second;

            const auto it = sums.find(S - (sum1 + sum2));
            if(it != sums.cend())
            {
                const auto& p3 = it->second;
                fout << vec[p1.first] << ' ' << vec[p1.second] << ' ';
                fout << vec[p2.first] << ' ' << vec[p2.second] << ' ';
                fout << vec[p3.first] << ' ' << vec[p3.second] << '\n';
                return 0;
            }
        }
    }

    fout << -1 << '\n';
}