Pagini recente » Cod sursa (job #2215171) | Cod sursa (job #422485) | Cod sursa (job #1014887) | Cod sursa (job #1011764) | Cod sursa (job #1190625)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMax = 102, SMax = 600000000;
struct numar
{
int value, i, j, k;
};
inline bool cmp(const numar &A, const numar &B)
{
return A.value < B.value;
}
int N, S;
int a[NMax];
numar v[NMax * NMax * NMax];
int nv;
int main()
{
freopen("loto.in", "r", stdin);
scanf("%d %d", &N, &S);
for (int i = 1; i <= N; ++ i)
scanf("%d", &a[i]);
for (int i = 1; i <= N; ++ i)
for (int j = 1; j <= N; ++ j)
for (int k = 1; k <= N; ++ k)
{
++nv;
v[nv].value = a[i] + a[j] + a[k];
v[nv].i = i;
v[nv].j = j;
v[nv].k = k;
}
sort(v+1, v+nv+1, cmp);
for (int i = 1; i <= nv; ++ i)
{
int ns = S - v[i].value;
int st = 1, dr = nv;
while (st <= dr)
{
int mij = (st+dr) >> 1;
if (v[mij].value == ns)
{
freopen("loto.out", "w", stdout);
printf("%d %d %d %d %d %d\n", a[v[i].i], a[v[i].j], a[v[i].k], a[v[mij].i], a[v[mij].j], a[v[mij].k]);
return 0;
}
else if (v[mij].value < ns)
st = mij + 1;
else
dr = mij - 1;
}
}
freopen("loto.out", "w", stdout);
scanf("-1\n");
return 0;
}