Pagini recente » Cod sursa (job #1314924) | Cod sursa (job #200392) | Cod sursa (job #694161) | Cod sursa (job #1914765) | Cod sursa (job #2803790)
/*
#include <bits/stdc++.h>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
struct trip {
int a, b, c;
friend ostream& operator <<(ostream& out, const trip& x) { return out << x.a << " " << x.b << " " << x.c; }
};
unordered_map <int, trip> r;
int main()
{
int n, x, s;
fin >> n >> s;
vector <int> v(n);
for(int i = 1; i <= n; i++)
fin >> x,
v[i - 1] = x;
for(int i : v)
for(int j : v)
for(int k : v)
r[i + j + k] = {i, j, k};
bool flag = true;
for(auto p : r) if(r.count(s - p.first)) {
fout << p.second << " " << r[s - p.first];
flag = false;
break;
}
if(flag) fout << "-1";
return 0;
} */
#include <bits/stdc++.h>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
unordered_map <int, int> r[3];
int main()
{
int n, x, s;
fin >> n >> s;
vector <int> v(n);
for(int i = 1; i <= n; i++)
fin >> x,
v[i - 1] = x,
r[0][x] = 0;
for(int i = 1; i <= 2; i++) {
for(auto p : r[i - 1])
for(auto x : v) if(p.first + x < s && r[i].find(p.first + x) == r[i].end())
r[i][p.first + x] = p.first;
}
bool flag = true;
for(auto p : r[2]) if(r[2].count(s - p.first)) {
int a = p.first;
for(int i : {1, 0}) {
fout << a - r[i + 1][a] << " ";
a = r[i + 1][a];
}
fout << a << " ";
a = s - p.first;
for(int i : {1, 0}) {
fout << a - r[i + 1][a] << " ";
a = r[i + 1][a];
}
fout << a << " ";
flag = false;
break;
}
if(flag) fout << "-1";
return 0;
}