Pagini recente » Cod sursa (job #2675841) | Cod sursa (job #906522) | Cod sursa (job #555269) | Cod sursa (job #2947132) | Cod sursa (job #213594)
Cod sursa(job #213594)
using namespace std;
#include <cstdio>
#include <algorithm>
#include <map>
#define IN "loto.in"
#define OUT "loto.out"
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define N_MAX 1<<7
int N,S;
int v[N_MAX];
struct patru{int s,i1,i2,i3;};
patru V[N_MAX*3];
inline int find(int val)
{
int p=1,q=V[0].s,m;
while(p<q)
{
m=(p+q)>>1;
if(val<=V[m].s)
q=m;
else
p=m+1;
}
if(V[p].s==val)
return p;
return 0;
}
void scan()
{
freopen(IN, "r",stdin);
freopen(OUT, "w",stdout);
scanf("%d%d\n", &N,&S);
FOR(i,1,N)
scanf("%d", &v[i]);
}
inline bool comp(const patru &x,const patru &y)
{
return x.s < y.s;
}
void solve()
{
FOR(i,1,N)
FOR(j,i,N)
FOR(k,j,N)
{
V[ ++V[0].s ].s = v[i] + v[j] + v[k];
V[ V[0].s ].i1 = i;
V[ V[0].s ].i2 = j;
V[ V[0].s ].i3 = k;
}
sort(V+1, V+V[0].s ,comp);
FOR(i,1,V[0].s)
{
int ok = find(S-V[i].s);
if(ok)
{
printf("%d %d %d %d %d %d\n",v[V[i].i1],v[V[i].i2],v[V[i].i3],v[V[ok].i1],v[V[ok].i2],v[V[ok].i3]);
return;
}
}
printf("-1\n");
}
int main()
{
scan();
solve();
return 0;
}