Cod sursa(job #3359459)

Utilizator Belea_DariusBelea Mihai Darius Belea_Darius Data 28 iunie 2026 16:15:40
Problema Loto Scor 85
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <bits/stdc++.h>
#define MAXN 100

using namespace std;

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

int v[MAXN + 1];
struct elem{
    int x, y, z, s;
};

int cmp(elem A, elem B){
    return A.s < B.s;
}

vector <elem> gen(int n){
    int i, j, k;
    vector <elem> rez;

    for(i = 1; i <= n; i++){
        for(j = 1; j <= n; j++){
            for(k = 1; k <= n; k++){
                rez.push_back({v[i], v[j], v[k], v[i] + v[j] + v[k]});
            }
        }
    }
    return rez;
}

int main()
{
    int n, suma, i, ok, pos;
    elem aux;

    fin >> n >> suma;
    for(i = 1; i <= n; i++){
        fin >> v[i];
    }

    vector <elem> fir3, sec3;
    fir3 = sec3 = gen(n);
    sort(sec3.begin(), sec3.end(), cmp);

    i = ok = 0;
    while(i < fir3.size() && !ok){
        if(suma > fir3[i].s){
            aux.x = aux.y = aux.z = 0;
            aux.s = suma - fir3[i].s;
            pos = lower_bound(sec3.begin(), sec3.end(), aux, cmp) - sec3.begin();
            if(pos < sec3.size() && fir3[i].s + sec3[pos].s == suma){
                ok = 1;
            }
        }
        i++;
    }
    i--;
    if(!ok){
        fout << "-1\n";
    }else{
        fout << fir3[i].x << " " << fir3[i].y << " " << fir3[i].z << " " << sec3[pos].x << " " << sec3[pos].y << " " << sec3[pos].z << "\n";
    }
    return 0;
}