Pagini recente » Cod sursa (job #1455477) | Cod sursa (job #444759) | Cod sursa (job #136176) | Cod sursa (job #771406) | Cod sursa (job #3165855)
#include <bits/stdc++.h>
using namespace std;
struct str{
long long s, x, y, z;
bool operator < (const str & aux) const
{
return s < aux.s;
}
};
const long long max_size = 1e2 + 3;
long long v[max_size];
vector <str> sume;
signed main ()
{
#ifdef LOCAL
freopen("test.in", "r", stdin);
freopen("test.out", "w", stdout);
#else
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
#endif // LOCAL
long long n, s;
cin >> n >> s;
for (long long i = 1; i <= n; i++)
{
cin >> v[i];
}
for (long long i = 1; i <= n; i++)
{
for (long long j = i; j <= n; j++)
{
for (long long k = j; k <= n; k++)
{
long long sum = v[i] + v[j] + v[k];
str aux = {sum, i, j, k};
sume.push_back(aux);
}
}
}
sort(sume.begin(), sume.end());
for (auto f : sume)
{
long long x = s - f.s;
long long st = -1, e = 20;
while (e >= 0)
{
if (st + (1LL << e) < sume.size() && sume[st + (1LL << e)].s < x)
{
st += (1 << e);
}
e--;
}
st++;
if (st < sume.size() && sume[st].s == x)
{
cout << f.x << " " << f.y << " " << f.z << " " << sume[st].x << " " << sume[st].y << " " << sume[st].z;
return 0;
}
}
cout << -1;
return 0;
}