Cod sursa(job #2746508)

Utilizator cosminradu1760Cosmin-Andrei Radu cosminradu1760 Data 27 aprilie 2021 23:09:24
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.49 kb
#include <bits/stdc++.h>

using namespace std;

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

unordered_map<int, tuple<int,int,int>> h;   //memoram elemente de forma: suma(cheie) - termenii sumei,
                                            //mai exact trei valori care insumeaza jumatate din suma
vector<int> numere;         //numerele posibile

int main()
{
    int N, S, x;
    fin>>N>>S;

    for(int i = 0; i < N; i++)
    {
        int x;
        fin>>x;
        numere.push_back(x);
    }

    for(int i = 0; i < N ; i++)
    {
        for(int j = i; j < N; j++)
        {
            for(int k = i; k < N; k++)      //incep de la i, numerele nu-s distincte
            {   tuple<int,int,int> temp;
                temp = make_tuple(numere[i],numere[j],numere[k]);       //jumatatea obtinuta cu cele 3 numere
                int jumate = get<0>(temp) + get<1>(temp) + get<2>(temp);
                h[jumate] = temp;

                if(h.find(S - jumate) != h.end())                       //cautam o alta jumatate cu care putem ajunge la suma
                {
                    fout<<get<0>(h[jumate])<<" "<<get<1>(h[jumate])<<" "<<get<2>(h[jumate])<<" ";               //elementele primei jumatati
                    fout<<get<0>(h[S - jumate])<<" "<<get<1>(h[S - jumate])<<" "<<get<2>(h[S - jumate])<<" ";   //elementele celei de a 2 a jumatati

                    return 0;
                }

            }

        }

    }
    fout<<-1;
    return 0;
}