Pagini recente » Cod sursa (job #1916497) | Cod sursa (job #1395955) | Cod sursa (job #1158531) | Cod sursa (job #686227) | Cod sursa (job #2747692)
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <vector>
#include <algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
struct sum
{
bool ok = false;
int i, j, k;
};
int main()
{
int N, S, i, j, k;
bool ok2 = false;
unordered_map<int, sum> perechi;
in >> N >> S;
vector <int> v(N);
for (i = 0; i < N; i++)
in >> v[i];
for (i = N - 1; i >= 0; --i)
for (j = i; j >= 0; --j)
for (k = j; k >= 0; --k)
{
perechi[v[i] + v[j] + v[k]].ok=1;
perechi[v[i] + v[j] + v[k]].i=v[i];
perechi[v[i] + v[j] + v[k]].j=v[j];
perechi[v[i] + v[j] + v[k]].k=v[k];
}
for (i = N - 1; i >= 0 && !ok2; --i)
for (j = i; j >= 0 && !ok2; --j)
for (k = j; k >= 0 && !ok2; --k)
if (perechi[S - v[i] - v[j] - v[k]].ok)
{
ok2 = 1;
out << v[i] << " " << v[j] << " " << v[k] << " ";
out << perechi[S - v[i] - v[j] - v[k]].i << " " << perechi[S - v[i] - v[j] - v[k]].j << " " << perechi[S - v[i] - v[j] - v[k]].k;
}
if (!ok2)
out << -1;
}