Pagini recente » Cod sursa (job #584335) | Cod sursa (job #2691971) | Cod sursa (job #1106981) | Cod sursa (job #691165) | Cod sursa (job #345345)
Cod sursa(job #345345)
#include<algorithm>
using namespace std;
struct pro{
int x,a,b,c;} a[100*100*100+1];
int v[101],Cat,ifin,jfin,N,z=1,S;
inline void inter(int &ww,int &qq)
{
int aux;
aux=ww;
ww=qq;
qq=aux;
}
inline void qsort(int p,int r)
{
int st=p,dr=r,piv=a[(st+dr)/2].x;
while(st<dr)
{
while(a[st].x<piv) ++st;
while(a[dr].x>piv) --dr;
if(dr>=st)
{
inter(a[dr].a,a[st].a);
inter(a[dr].b,a[st].b);
inter(a[dr].c,a[st].c);
inter(a[dr].x,a[st].x);
++st;
--dr;
}
}
if(st<r)
qsort(st,r);
if(dr>p)
qsort(p,dr);
}
int main()
{int st,dr,mid;
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d%d",&N,&S);
for(int i=1;i<=N;++i)
scanf("%d",&v[i]);
for(int i=1;i<=N;++i)
for(int j=1;j<=N;++j)
for(int o=1;o<=N;++o)
{
a[z].a=v[i];
a[z].b=v[j];
a[z].c=v[o];
a[z].x=v[o]+v[i]+v[j];
++z;
}
qsort(1,z-1);
for(int i=1;i<z;++i)
{
Cat=S-a[i].x;
int ret = 0;
for (int ii=1<<18;ii>0;ii/=2)
if (ret + ii <= z-1)
if (a[ret+ii].x <= Cat)
ret += ii;
if (ret != i && a[ret].x == Cat)
{
printf("%d %d %d ",a[ret].a,a[ret].b,a[ret].c);
printf("%d %d %d",a[i].a,a[i].b,a[i].c);
return 0;
}
}
printf("-1");
return 0;
}