Cod sursa(job #2954410)

Utilizator _andrei4567Stan Andrei _andrei4567 Data 14 decembrie 2022 10:30:58
Problema Loto Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
#include <map>
#include <vector>
#include <algorithm>

using namespace std;

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

const int N = 100;
int a[3 * N + 2];

map <int, pair <int, int> > m;

vector <int> v;

int n, sum;

int main()
{
    cin >> n >> sum;
    for (int i = 1; i <= n; ++i)
        cin >> a[i];
    for (int i = 1; i <= n; ++i)
        for (int j = i; j <= n; ++j)
            for (int k = j; k <= n; ++k)
                if (a[i] + a[j] + a[k] <= sum)
                    m[a[i] + a[j] + a[k]] = {a[i], a[j]};
    bool gasit = false;
    for (auto it : m)
    {
        int dif = sum - it.first;
        if (dif && m.find(dif) != m.end())
        {
            v.push_back(m[dif].second);
            v.push_back(m[dif].first);
            v.push_back(it.first - it.second.first - it.second.second);
            v.push_back(it.second.second);
            v.push_back(it.second.first);
            v.push_back(dif - m[dif].second - m[dif].second);
            gasit = true;
            return 0;
        }
    }
    if (!gasit)
        cout << "-1";
    return 0;
}