Cod sursa(job #2746290)

Utilizator IPCristianIlie Cristian IPCristian Data 27 aprilie 2021 17:47:38
Problema Loto Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <vector>

using namespace std;

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

unordered_map<int, tuple<int,int,int>> Jumate; // Un dictionar de forma (x+y+z, {x,y,z}) unde stocam toate sumele a 3
                                               // termeni diferiti,tuplul fiind utilizat pentru afisarea raspunsului

vector<int> Nr;

int main()

{
    int n,s,nr,SumaCrt;

    fin>>n>>s;

    for (int i=0;i<n;i++)
    {
        fin>>nr;
        Nr.push_back(nr);
    }

    for (int i=0;i<n;i++)
        for (int j=0;j<n;j++)
            for(int k=0;k<n;k++)
            {
                SumaCrt = Nr[i] + Nr[j] + Nr[k];

                if (Jumate.find(s - SumaCrt) != Jumate.end())   // Am mai gasit cealalta jumatate deja, afisam cele 3 elemente curente + tuplul de la pozitia jumatatii
                    {
                        fout<<Nr[i]<<' '<<Nr[j]<<' '<<Nr[k]<<' '<<get<0>(Jumate[s-SumaCrt])<<' '<<get<1>(Jumate[s-SumaCrt])<<' '<<get<2>(Jumate[s-SumaCrt]);
                        goto jump;
                    }

                Jumate[SumaCrt] = {Nr[i],Nr[j],Nr[k]};

            }

    fout<<-1;

    jump:

    fin.close();
    fout.close();
    return 0;

}