Pagini recente » Cod sursa (job #48055) | Cod sursa (job #2779496) | Cod sursa (job #2817901) | Cod sursa (job #1217506) | Cod sursa (job #3165862)
#include <bits/stdc++.h>
using namespace std;
#pragma GCC target ("avx2")
#pragma GCC optimize ("O3")
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
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
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;
if (x < 0)
{
continue;
}
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 << v[f.x] << " " << v[f.y] << " " << v[f.z] << " " << v[sume[st].x] << " " << v[sume[st].y] << " " << v[sume[st].z];
return 0;
}
}
cout << -1;
return 0;
}