Cod sursa(job #3367482)

Utilizator Vlad3218Garcea Vlad Vlad3218 Data 8 octombrie 2026 10:49:59
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <iostream>
#include <unordered_set>
#include <fstream>

using namespace std;

ifstream fin ("loto.in");
ofstream fout ("loto.out");

const int NMAX = 100;

int n,s;
int a[NMAX+1];
unordered_set <int> uset,hashmp;

void input(){
    fin >> n >> s;
    for (int i=1;i<=n;++i)
        fin >> a[i];
}

void print(int x){
    for (int i=1;i<=n;++i){
        int target = x - a[i];
        for (int j=1;j<=n;++j){
            int num = a[j];
            if (hashmp.find(target - num) != hashmp.end()){
                fout << a[i] << ' ' << num << ' ' << target - num << ' ';
                return;
            }
        }
    }
}

void solve(){
    for (int i=1;i<=n;++i)
        hashmp.insert(a[i]);

    int sum;
    for (int i=1;i<=n;++i)
        for (int j=i;j<=n;++j)
            for (int k=j;k<=n;++k){
                sum = a[i] + a[j] + a[k];
                uset.insert(sum);
            }

    int a = -1, b = -1;
    for (int num:uset){
        int complement = s - num;
        if (uset.find(complement) != uset.end()){
            a = num, b = complement;
            break;
        }
    }

    if (a == -1 || b == -1){
        fout << -1;
        return;
    }

    print(a);
    print(b);
}
int main()
{
    input();
    solve();
    return 0;
}