Pagini recente » Cod sursa (job #148095) | Cod sursa (job #1591135) | Cod sursa (job #536536) | Cod sursa (job #2511583) | Cod sursa (job #1145132)
#include<cstdio>
#include<algorithm>
using namespace std;
int n,s,nr;
struct camp
{
int sum,x,y,z;
}v[1000005];
inline int cautbin(int val)
{
int st,dr,mij;
st=1;dr=nr;mij=(st+dr)/2;
while (st<=dr)
{
if (v[mij].sum<val) {st=mij+1;mij=(st+dr)/2;}
else if (v[mij].sum>val) {dr=mij-1;mij=(st+dr)/2;}
else return mij;
}
if (v[st].sum==val) return st;
if (v[dr].sum==val) return dr;
return -1;
}
int cmp(camp r,camp q)
{
if (r.sum>q.sum) return 0;
return 1;
}
int main()
{
int a[101],i,j,k;
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d%d",&n,&s);
for (i=1;i<=n;++i)
scanf("%d",&a[i]);
nr=0;
for (i=1;i<=n;++i)
for (j=i;j<=n;++j)
for(k=j;k<=n;++k)
{
++nr;
v[nr].sum=a[i]+a[j]+a[k];
v[nr].x=a[i];
v[nr].y=a[j];
v[nr].z=a[k];
}
sort(v+1,v+nr+1,cmp);
int e=0;
for (i=1;i<nr;++i)
{
int poz=cautbin(s-v[i].sum);
if (poz!=-1)
{
printf("%d %d %d %d %d %d",v[i].x,v[i].y,v[i].z,v[poz].x,v[poz].y,v[poz].z);
e=1;
break;
}
}
if (e==0) printf("-1");
return 0;
}