Pagini recente » Cod sursa (job #3191918) | Cod sursa (job #1343831) | Cod sursa (job #11174) | Cod sursa (job #2937824) | Cod sursa (job #3128809)
#include <iostream>
#include <fstream>
#include <vector>
#include <map>
using namespace std;
bool gaseste_combinatie(const vector<int> &numere, int N, int S, vector<int> &rezultat) {
map<int, vector<int>> sume_partiale;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
for (int k = 0; k < N; k++) {
int suma = numere[i] + numere[j] + numere[k];
if (sume_partiale.count(S - suma) != 0) {
rezultat = {numere[i], numere[j], numere[k]};
rezultat.insert(rezultat.end(), sume_partiale[S - suma].begin(), sume_partiale[S - suma].end());
return true;
}
sume_partiale[suma] = {numere[i], numere[j], numere[k]};
}
}
}
return false;
}
int main() {
int N, S;
ifstream fin("loto.in");
ofstream fout("loto.out");
fin >> N >> S;
vector<int> numere(N);
for (int i = 0; i < N; i++) {
fin >> numere[i];
}
fin.close();
vector<int> rezultat;
if (gaseste_combinatie(numere, N, S, rezultat)) {
for (int numar : rezultat) {
fout << numar << " ";
}
} else {
fout << -1;
}
fout.close();
return 0;
}