Pagini recente » Cod sursa (job #2632047) | Cod sursa (job #281568) | Cod sursa (job #364829) | Cod sursa (job #2204214) | Cod sursa (job #2746893)
#include <iostream>
#include <unordered_map>
using namespace std;
const int nMax = 105;
struct Suma {
int a, b, c;
};
unordered_map<int, Suma> sume;
int n, s, v[nMax];
int main() {
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
// Citeste datele de intrare
cin >> n >> s;
for (int i = 0; i < n; i++) {
cin >> v[i];
}
// Calculeaza sume de 3
for (int i1 = 0; i1 < n; i1++) {
// Incepe de la i1 (si nu 0) pentru a nu repeta elemente
for (int i2 = i1; i2 < n; i2++) {
// Incepe de la i2 (si nu 0) pentru a nu repeta elemente
for (int i3 = i2; i3 < n; i3++) {
// Adauga elemente in lista de tipul cheie=suma valoare=numerele din care se compune suma
sume[v[i1] + v[i2] + v[i3]] = {v[i1], v[i2], v[i3]};
}
}
}
// Parcurge fiecare suma de 3
for (auto &suma1: sume) {
// Cauta daca `suma dorita - suma curenta` se afla in lista
auto suma2 = sume.find(s - (suma1.second.a + suma1.second.b + suma1.second.c));
if (suma2 != sume.end()) {
// Daca se afla, afiseaza numerele ce compun suma si opreste programul
cout << suma1.second.a << " " << suma1.second.b << " " << suma1.second.c << " "
<< suma2->second.a << " " << suma2->second.b << " " << suma2->second.c;
return 0;
}
}
// Nicio suma de mai sus nu a intrat in if-ul cu `return 0`, ceea ce inseamna ca nicio suma nu
// a fost gasita, deci trebuie afisat -1.
cout << "-1";
return 0;
}