Pagini recente » Cod sursa (job #992025) | Cod sursa (job #2484540) | Cod sursa (job #3190340) | Cod sursa (job #294525) | Cod sursa (job #2227679)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("loto.in");
ofstream fout ("loto.out");
int v[101];
vector <pair <int, vector <int>>> hashh [1000000];
void insertt (int x, int i, int j, int k) {
int modulo = x % 1000000;
for (auto y : hashh[modulo]) {
if (y.first == x) return;
}
vector <int> indices;
indices.push_back(i);
indices.push_back(j);
indices.push_back(k);
hashh[modulo].emplace_back(x, indices);
}
bool isIn (int x, int i, int j, int k) {
int modulo = x % 1000000;
for (auto current : hashh[modulo]) {
if (current.first == x) {
for (auto y : current.second) {
fout << v[y] << ' ';
}
fout << v[i] << ' ' << v[j] << ' ' << v[k];
return true;
}
}
return false;
}
int main() {
int n;
int s;
fin >> n >> s;
for (int i = 1; i <= n; ++i) {
fin >> v[i];
}
for (int i = 1; i <= n; ++i) {
for (int j = i; j <= n; ++j) {
for (int k = j; k <= n; ++k) {
long long sum = 1LL * v[i] + v[j] + v[k];
if (sum > s) continue;
insertt(sum, i, j, k);
int diff = s - sum;
if (isIn(diff, i, j, k)) {
return 0;
}
}
}
}
fout << -1;
return 0;
}