Cod sursa(job #2789255)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 27 octombrie 2021 11:31:47
Problema Loto Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <fstream>
#include <unordered_map>

using namespace std;

//unordered_map<int,int> sume;
// In acest unordered_map, cheile si valorile sunt intregi
// sume[10] = 30
// 10 se numeste cheie
// 30 se numeste valoare

const int Nmax = 105;

int n, a[Nmax], S;

struct Triplet {
    int x, y, z;
};

unordered_map<int, Triplet> sume;
// de la suma cautata catre cele 3 valori care o formeaza

int main() {
    ifstream fin("loto.in");
    ofstream fout("loto.out");
    fin >> n >> S;
    for(int i = 1; i <= n; i++) {
        fin >> a[i];
    }
    for(int i = 1; i <= n; i++) {
        for(int j = i; j <= n; j++) {
            for(int k = j; k <= n; k++) {
                sume[a[i] + a[j] + a[k]] = {a[i], a[j], a[k]};
            }
        }
    }
    for(int i = 1; i <= n; i++) {
        for(int j = i; j <= n; j++) {
            for(int k = j; k <= n; k++) {
                int complement = S - a[i] - a[j] - a[k];
                if(sume.count(complement) > 0) { // count returneaza cate chei cu valoarea complement exista in sume
                    Triplet t = sume[complement];
                    fout << a[i] << " " << a[j] << " " << a[k] << " "
                        << t.x << " " << t.y << " " << t.z << "\n";
                    return 0;
                }
            }
        }
    }
    fout << "-1\n";
}