Pagini recente » Cod sursa (job #86244) | Cod sursa (job #2038061) | Cod sursa (job #2697647) | Cod sursa (job #963718) | Cod sursa (job #2780833)
#include <fstream>
#include <unordered_map>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
struct triplet {
int x, y, z;
};
triplet t = {-1, -1, -1};
unordered_map<int, triplet> fr;
int n, s, i, j, k, a[102], has0 = 0;
int main()
{
f >> n >> s;
for (i = 1; i <= n; i++) {
f >> a[i];
if (a[i] == 0)
has0 = 1;
}
for (i = 1; i < n; i++)
for (j = i + 1; j <= n; j++)
if (a[j] < a[i])
swap(a[i], a[j]);
for (i = 1; i <= n; i++)
for (j = i; j <= n; j++)
for (k = j; k <= n; k++)
fr[a[i] + a[j] + a[k]] = {a[i], a[j], a[k]};
for (i = 1; i <= n; i++) {
for (j = i; j <= n; j++) {
for (k = j; k <= n; k++) {
if (s - a[i] - a[j] - a[k] < 0)
k = n + 1;
else if ((fr[s - a[i] - a[j] - a[k]].x || fr[s - a[i] - a[j] - a[k]].y || fr[s - a[i] - a[j] - a[k]].z) || (s - a[i] - a[j] - a[k] == 0 && has0)) {
t = fr[s - a[i] - a[j] - a[k]];
g << a[i] << ' ' << a[j] << ' ' << a[k] << ' ';
g << t.x << ' ' << t.y << ' ' << t.z;
k = n + 1;
j = n + 1;
i = n + 1;
}
}
}
}
if (t.x == -1 && t.y == -1 && t.z == -1)
g << -1;
f.close();
g.close();
return 0;
}