Cod sursa(job #2741619)

Utilizator MirunaStefaniaLupascu Miruna-Stefania MirunaStefania Data 16 aprilie 2021 19:44:56
Problema Loto Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.53 kb
#include <bits/stdc++.h>
#define mod 666013

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

struct elem ///cele 3 elem care sa ne dea jumatate din suma
{
    int t1, t2, t3;
};

unordered_map<int, elem> h;/// dictionar suma : triplet ce ne da suma respectiva
int v[105]; /// elem pe care le am loa dispozitie
int main()
{
    int n, s, i, j, k, suma;
    elem e;
    bool gasit = false;
    fin >> n >> s;
    for(i = 1; i <= n; ++i)
        fin >> v[i];

    ///facem toate sumele posibile de cate 3 elem
    for(i = 1; i <= n; ++i)
        for(j = i; j <= n; ++j)/// j = i si nu j = i + 1 pt ca un nr poate fi ales de mai multe ori
            for(k = j; k <= n; ++k)
    {
        suma = v[i] + v[k] + v[j];
        e.t1 = v[i];
        e.t2 = v[j];
        e.t3 = v[k];
        h[suma] = e; ///il adaugam in map

    }

    for(auto it = h.begin(); it != h.end(); it++)///h.begin() pointer catre primul elem
    {
        int cautat = s - it->first;///first = suma, second = tuplu
        // documentatie unordered_map :: https://www.geeksforgeeks.org/unordered_map-in-cpp-stl/
        ///cautam daca avem complementul pentru suma data
        if(h.count(cautat) > 0)///daca am elem cu cheia "cautat"
        {
            fout << it-> second.t1 << " "<< it-> second.t2 << " "<< it-> second.t3 << " "<< h[cautat].t1 << " "<< h[cautat].t2 << " "<< h[cautat].t3;
            gasit = true;
            break;
        }

    }
    if(gasit == false)
        fout << -1;


    return 0;
}