Cod sursa(job #2911220)

Utilizator ArseniuVictorStefanArseniu Victor Stefan ArseniuVictorStefan Data 27 iunie 2022 16:48:23
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>
#include <unordered_map>
#include <vector>
#include <array>

using namespace std;

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

struct triplet
{
    int a, b, c;
};

int n, sum, a[100], nsums;
pair<int, triplet> vsums[1000000];

int main()
{
    cin >> n >> sum;
    for(int i = 0; i < n; i++)
        cin >> a[i];

    unordered_map<int, triplet> sums;
    for(int i = 0; i < n; i++)
        for(int j = i; j < n; j++)
            for(int k = j; k < n; k++)
            {
                triplet v;
                v.a = a[i]; v.b = a[j]; v.c = a[k];
                int s = a[i] + a[j] + a[k];
                if(s <= sum && sums.find(s) == sums.end())
                {
                    sums[s] = v;
                    vsums[nsums++] = {s, v};
                }
            }
    for(int i = 0; i < nsums; i++)
        if(sums.find(sum - vsums[i].first) != sums.end())
        {
            triplet a = vsums[i].second, b = sums[sum - vsums[i].first];
            cout << a.a << ' ' << a.b << ' ' << a.c << ' ' << b.a << ' ' << b.b << ' ' << b.c;
            cout << '\n';
            return 0;
        }
    cout << "-1\n";
    return 0;
}