Pagini recente » Cod sursa (job #2191918) | Cod sursa (job #1012489) | Cod sursa (job #555879) | Cod sursa (job #2334007) | Cod sursa (job #2741619)
#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;
}