Pagini recente » Cod sursa (job #1440203) | Cod sursa (job #1485496) | Cod sursa (job #3177082) | Cod sursa (job #575196) | Cod sursa (job #3132026)
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <vector>
using namespace std;
ifstream f1("loto.in");
ofstream f2("loto.out");
int main() {
int N;
int S = 0;
bool gasit = false;
unordered_map<int, pair<int, std::vector<int>>> map_nr;
vector<int> vec_nr;
f1 >> N >> S;
vec_nr.resize(N);
for (int i = 0; i < N; i++) {
f1 >> vec_nr[i];
}
int i, j, k;
for (i = 0; i < N; i++) {
for (j = i; j < N; j++) {
for (k = j; k < N; k++) {
vector<int> temp;
int num1 = vec_nr[i];
int num2 = vec_nr[j];
int num3 = vec_nr[k];
temp.push_back(num1);
temp.push_back(num2);
temp.push_back(num3);
int sum = num1 + num2 + num3;
int complement = S - sum;
pair<int, vector<int>> inner_pair;
inner_pair.first = complement;
inner_pair.second = temp;
map_nr.insert(make_pair(sum, inner_pair));
}
}
}
for (i = 0; i < N; i++) {
for (j = i; j < N; j++) {
for (k = j; k < N; k++) {
int sum = vec_nr[i] + vec_nr[j] + vec_nr[k];
if (map_nr.count(S - sum) != 0 && sum == map_nr[S - sum].first) {
vector<int> vect_temp = map_nr[S - sum].second;
f2 << vec_nr[i] << " ";
f2 << vec_nr[j] << " ";
f2 << vec_nr[k] << " ";
int idx;
for (idx = 0; idx < vect_temp.size(); idx++) {
f2 << vect_temp[idx] << " ";
}
gasit = true;
break;
}
}
if (gasit == true) {
break;
}
}
if (gasit == true) {
break;
}
}
if (gasit == false) {
f2 << -1;
}
return 0;
}