Pagini recente » Cod sursa (job #1948446) | Cod sursa (job #9246) | Cod sursa (job #1933881) | Cod sursa (job #2037275) | Cod sursa (job #3128593)
#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 = i; j < N; j++) {
for (int k = j; 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;
}