Pagini recente » Cod sursa (job #2321793) | Cod sursa (job #652755) | Cod sursa (job #2716011) | Cod sursa (job #1102405) | Cod sursa (job #120059)
Cod sursa(job #120059)
#include<stdio.h>
long n,ss,s[1000000],i,i1,i2,a[111],j,aa,nn,x[1000000],x1[1000000],x2[1000000],poz,st,dr,m;
int main()
{freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%ld %ld",&n,&ss);
s[0]=0;
for(i=1;i<=n;++i)
scanf("%ld",&a[i]);
nn=0;
for(i=1;i<=n;++i)
for(i1=1;i1<=n;++i1)
for(i2=1;i2<=n;++i2)
{s[++nn]=a[i]+a[i1]+a[i2];x[nn]=i;x1[nn]=i1;x2[nn]=i2;}
for(i=1;i<nn;++i)
for(j=i+1;j<=nn;++j)
if(s[i]>s[j]){aa=x1[i];x1[i]=x1[j];x1[j]=aa;aa=x2[i];x2[i]=x2[j];x2[j]=aa;aa=x[i];x[i]=x[j];x[j]=aa;aa=s[i];s[i]=s[j];s[j]=aa;}
poz=-1;
for(i=1;i<=nn;++i)
{st=1;dr=nn;
while(st<=dr)
{m=(st+dr)/2;
if (s[m]+s[i]==ss) {poz=m; break;}
else if (s[m]+s[i]>ss) dr=m-1;
else st=m+1;
}
if(poz>=0) {printf("%ld %ld %ld %ld %ld %ld",a[x[i]],a[x1[i]],a[x2[i]],a[x[poz]],a[x1[poz]],a[x2[poz]]);break;}
}
if(poz==-1) printf("-1");
fcloseall();
return 0;
}