Pagini recente » Cod sursa (job #2914556) | Cod sursa (job #969262) | Cod sursa (job #1938207) | Cod sursa (job #1257014) | Cod sursa (job #1401537)
#include<cstdio>
#include<algorithm>
#include<cstring>
#define Nmax 105
using namespace std;
int n,i,j,s,nrs,p,v[Nmax],k;
struct nod
{
int a;
int x;
int y;
int z;
} sum[Nmax*Nmax*Nmax];
int cmp(const nod A,const nod B)
{
return A.a<B.a;
}
int cb(int x)
{
int st=1,dr=nrs,mij=0;
while (st<=dr)
{
mij=(st+dr)/2;
if (sum[mij].a==x) return mij;
if (sum[mij].a<=x && (sum[mij+1].a>x || mij==nrs)) return mij;
if (sum[mij].a<x) st=mij+1;
else dr=mij-1;
}
return 0;
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d %d",&n,&s);
for (i=1;i<=n;i++)
scanf("%d",&v[i]);
if (s<=v[1]*6 || s>v[n]*6)
{
printf("-1");
return 0;
}
for (i=1;i<=n;i++)
for (j=i;j<=n;j++)
for (k=j;k<=n;k++)
{
sum[++nrs].a=v[i]+v[j]+v[k];
sum[nrs].x=i;
sum[nrs].y=j;
sum[nrs].z=k;
}
sort(sum+1,sum+nrs+1,cmp);
for (i=1;i<=n;i++)
for (j=i;j<=n;j++)
for (k=j;k<=n;k++)
{
p=cb(s-(v[i]+v[j]+v[k]));
if (sum[p].a==s-(v[i]+v[j]+v[k]) )
{printf("%d %d %d %d %d %d",v[i],v[j],v[k]
,v[sum[p].x],v[sum[p].y],v[sum[p].z]);
return 0; }
}
printf("-1") ;
return 0;
}