Cod sursa(job #2746423)

Utilizator 6kmeleon6Luca Cordus 6kmeleon6 Data 27 aprilie 2021 21:04:37
Problema Loto Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.63 kb
#include <bits/stdc++.h>

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 = 1; 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 ok2 = 0;
    for (i = 0; i < N; i++)
    {
        for (j = i; j < N; j++)
        {
            for (k = j; k < N; k++)
            {
                if (sume_perechi[S - numere[i] - numere[j] - numere[k]].ok != 0)
                {
                    out << numere[i] << " " << numere[j] << " " << numere[k] << " " << sume_perechi[S - numere[i] - numere[j] - numere[k]].i << " " << sume_perechi[S - numere[i] - numere[j] - numere[k]].j << " " << sume_perechi[S - numere[i] - numere[j] - numere[k]].k;
                    i = N;
                    j = N;
                    k = N;
                    ok2 = 1;
                }
            }
        }
    }
    if (ok2 == 0)
        out << "-1";
    return 0;
}