Pagini recente » Cod sursa (job #284781) | Cod sursa (job #3216850) | Cod sursa (job #626728) | Cod sursa (job #2553449) | Cod sursa (job #2954410)
#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[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);
gasit = true;
return 0;
}
}
if (!gasit)
cout << "-1";
return 0;
}