Cod sursa(job #2760725)

Utilizator Virgil993Virgil Turcu Virgil993 Data 28 iunie 2021 20:35:29
Problema Loto Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#include<iostream>
#include<bits/stdc++.h>

using namespace std;

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

struct suma_trei{ //in aceasta structura voi tine minte cele trei numere ce alcatuiesc o anumita suma
    long long x,y,z;
}aux;

unordered_map <long long, suma_trei> mp; // hash mapul ce are cheie suma , si valoare cele trei numere ce o alcatuiesc, vom folosi acest hash map pentru a verifica
// in O(1) daca exista complementul unei sume




long long v[101];

int main()
{
    long long n, s, s2;
    fin>>n>>s;
    for(int i=0;i<n;i++)
        fin>>v[i];

    int ok = 0;
    //cream toate sumele posibile de lungime 3
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            for(int k=0;k<n;k++)
    {
        s2 = v[i]+v[j]+v[k];
        aux.x = v[i];
        aux.y = v[j];
        aux.z = v[k];
        mp[s2] = aux;
    }

    for(auto a: mp) //trec prin hash map si verific daca complementul fata de s exista, daca da il afisez si opresc for-ul
    {
        if(mp.find(s-a.first)!= mp.end())
        {
            suma_trei aux2 = mp.find(s-a.first)->second;
            fout<<a.second.x<<" "<<a.second.y<<" "<<a.second.z<<" "<<aux2.x<<" "<<aux2.y<<" "<<aux2.z;
            ok = 1;
            break;
        }
    }
    if(ok == 0)
        fout<<-1;



return 0;
}