Cod sursa(job #2746431)

Utilizator 6kmeleon6Luca Cordus 6kmeleon6 Data 27 aprilie 2021 21:14:30
Problema Loto Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.56 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <unordered_map>

using namespace std;

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

struct sum
{
    int ok = 0, i, j, k;
};

int main()
{
    int N, S, i, j, k, x;
    vector <int> numere;
    unordered_map <int, sum> sume_perechi; /// Pentru suma X vom atasa o pereche din care rezulta acea suma
    in >> N >> S;
    for (i = 0; i < N; ++i)
    {
        in >> x;
        numere.push_back(x);
    }

    for (i = 0; i < N; ++i)
    {
        for (j = i; j < N; ++j)
        {
            for (k = j; k < N; ++k)
            {
                sume_perechi[numere[i] + numere[j] + numere[k]].i = numere[i];
                sume_perechi[numere[i] + numere[j] + numere[k]].j = numere[j];
                sume_perechi[numere[i] + numere[j] + numere[k]].k = numere[k];
                sume_perechi[numere[i] + numere[j] + numere[k]].ok = 1;
            }
        }
    }
    int suma_cautata;
    for (i = 0; i < N; ++i)
    {
        for (j = i; j < N; ++j)
        {
            for (k = j; k < N; ++k)
            {
                suma_cautata = S - numere[i] - numere[j] - numere[k];
                if (sume_perechi[suma_cautata].ok != 0)
                {
                    out << numere[i] << " " << numere[j] << " " << numere[k] << " " << sume_perechi[suma_cautata].i << " " << sume_perechi[suma_cautata].j << " " << sume_perechi[suma_cautata].k;
                    return 0;
                }
            }
        }
    }
    out << "-1";
    return 0;
}