Cod sursa(job #3129300)

Utilizator Adela_PetrePetre Adela Adela_Petre Data 13 mai 2023 21:21:46
Problema Loto Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <iostream>
#include <fstream>
#include <unordered_map>
using namespace std;

ifstream in("loto.in");
ofstream out("loto.out");
unordered_map <int, pair<pair<int, int>, int> > suma3din6;
const int NMAX = 100;
int v[NMAX + 1];
int N, S, s;
int main() {
    in >> N >> S;
    for (int i = 0; i < N; i++) //citim numerele
        in >> v[i];
    bool found = 0; // daca am gasit combinatia de numere pt a obtine suma
    for (int i = 0; i < N; i++){
        for (int j = 0; j < N; j++){
            for (int k = 0; k < N; k++){
                s = v[i] + v[j] + v[k];
                suma3din6[s] = make_pair(make_pair(v[i], v[j]), v[k]); //stocam in map toate combinatiile de 3 numere si suma lor
                //verificam daca exista un 3-tuplu in map la care sa adunam cele 3 numere si sa obtinem suma
                if (suma3din6.find(S - s) != suma3din6.end()) {
                    found = 1;
                    S = S - s;
                    out << suma3din6[S].first.first << ' ' << suma3din6[S].first.second  << ' ' << suma3din6[S].second << ' ';
                    out << v[i] << ' ' << v[j] << ' ' << v[k];
                }
            }
        }
    }

    if (!found){
        out << -1;
    }
    in.close();
    out.close();
    return 0;
}