Pagini recente » Cod sursa (job #3164409) | Cod sursa (job #1678604) | Cod sursa (job #1235644) | Cod sursa (job #197786) | Cod sursa (job #2954408)
#include <fstream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin ("loto.in");
ofstream cout ("loto.out");
const int N = 100;
int a[3 * N + 2];
map <int, pair <int, int> > m;
vector <int> v;
int n, sum;
int main()
{
cin >> n >> sum;
for (int i = 1; i <= n; ++i)
cin >> a[i];
for (int i = 1; i <= n; ++i)
for (int j = i; j <= n; ++j)
for (int k = j; k <= n; ++k)
if (a[i] + a[j] + a[k] <= sum && m.find(a[i] + a[j] + a[k]) == m.end())
m[a[i] + a[j] + a[k]] = {a[i], a[j]};
bool gasit = false;
for (auto it : m)
{
int dif = sum - it.first;
if (dif && m.find(dif) != m.end())
{
v.push_back(m[dif].second);
v.push_back(m[dif].first);
v.push_back(it.first - it.second.first - it.second.second);
v.push_back(it.second.second);
v.push_back(it.second.first);
v.push_back(dif - m[dif].second - m[dif].second);
sort (v.begin(), v.end());
for (auto it : v)cout << it << ' ';
gasit = true;
return 0;
}
}
if (!gasit)
cout << "-1";
return 0;
}