Cod sursa(job #2747692)

Utilizator 6kmeleon6Luca Cordus 6kmeleon6 Data 29 aprilie 2021 15:50:14
Problema Loto Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <vector>
#include <algorithm>

using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");

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

int main()
{
    int N, S, i, j, k;
    bool ok2 = false;
    unordered_map<int, sum> perechi;
    in >> N >> S;
    vector <int> v(N);
    for (i = 0; i < N; i++)
        in >> v[i];

    for (i = N - 1; i >= 0; --i)
        for (j = i; j >= 0; --j)
            for (k = j; k >= 0; --k)
            {
                perechi[v[i] + v[j] + v[k]].ok=1;
                perechi[v[i] + v[j] + v[k]].i=v[i];
                perechi[v[i] + v[j] + v[k]].j=v[j];
                perechi[v[i] + v[j] + v[k]].k=v[k];
            }

    for (i = N - 1; i >= 0 && !ok2; --i)
        for (j = i; j >= 0 && !ok2; --j)
            for (k = j; k >= 0 && !ok2; --k)
                if (perechi[S - v[i] - v[j] - v[k]].ok)
                {
                    ok2 = 1;
                    out << v[i] << " " << v[j] << " " << v[k] << " ";
                    out << perechi[S - v[i] - v[j] - v[k]].i << " " << perechi[S - v[i] - v[j] - v[k]].j << " " << perechi[S - v[i] - v[j] - v[k]].k;
                }
    if (!ok2)
        out << -1;
}