Cod sursa(job #2803758)

Utilizator Cosmin2004_InfoMoldoveanu Cosmin Cosmin2004_Info Data 20 noiembrie 2021 13:43:12
Problema Loto Scor 85
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
unordered_map <int, int> r[3];

int main()
{
    int n, x, s;
    fin >> n >> s;
    vector <int> v(n);
    for(int i = 1; i <= n; i++)
        fin >> x,
        v[i - 1] = x,
        r[0][x] = 0;
    for(int i = 1; i <= 2; i++) {
        for(auto p : r[i - 1])
            for(auto x : v) if(p.first + x < s && r[i].find(p.first + x) == r[i].end())
                r[i][p.first + x] = p.first;
    }
    bool flag = true;
    for(auto p : r[2]) if(r[2].find(s - p.first) != r[2].end()) {
        int a = p.first;
        for(int i : {1, 0}) {
            fout << a - r[i + 1][a] << " ";
            a = r[i + 1][a];
        }
        fout << a << " ";
        a = s - p.first;
        for(int i : {1, 0}) {
            fout << a - r[i + 1][a] << " ";
            a = r[i + 1][a];
        }
        fout << a << " ";
        flag = false;
        break;
    }
    if(flag) fout << "-1";
    return 0;
}