Cod sursa(job #2911217)

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

using namespace std;

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

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

    unordered_map<int, array<int, 3>> sums;
    vector<pair<int, array<int, 3>>> vsums;
    vsums.reserve(n * n * n);
    for(int i = 0; i < n; i++)
        for(int j = i; j < n; j++)
            for(int k = j; k < n; k++)
            {
                array<int, 3> v;
                v[0] = a[i]; v[1] = a[j]; v[2] = a[k];
                int s = a[i] + a[j] + a[k];
                if(sums.find(s) == sums.end())
                {
                    sums[s] = v;
                    vsums.push_back({s, v});
                }
            }
    for(int i = 0; i < vsums.size(); i++)
        if(sums.find(sum - vsums[i].first) != sums.end())
        {
            for(int j = 0; j < 3; j++)
                cout << vsums[i].second[j] << ' ';
            for(int j = 0; j < 3; j++)
                cout << sums[sum - vsums[i].first][j] << ' ';
            cout << '\n';
            return 0;
        }
    cout << "-1\n";
    return 0;
}