Pagini recente » Cod sursa (job #2281077) | Cod sursa (job #2318064) | Cod sursa (job #2539376) | Cod sursa (job #2132789) | Cod sursa (job #2760725)
#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;
}