Pagini recente » Cod sursa (job #2475457) | Cod sursa (job #2604618) | Cod sursa (job #2342118) | Cod sursa (job #2250576) | Cod sursa (job #2626385)
#include<cstdio>
#include<algorithm>
using namespace std;
long long b[1000007];
long a[107];
long n,s,u;
inline bool bs(long long val)
{
long st=1,dr=u,med;
while (st<=dr)
{
med=(st+dr)/2;
if (b[med]==val)
return 1;
if (b[med]<val)
st=med+1;
else
dr=med-1;
}
if (b[med]==val)
return 1;
return 0;
}
int main()
{
long i,j,k,i1,j1,k1;
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%ld %ld",&n,&s);
for (i=1;i<=n;i++)
scanf("%ld",&a[i]);
for (i=1;i<=n;i++)
for (j=i;j<=n;j++)
for (k=j;k<=n;k++)
b[++u]=a[i]+a[j]+a[k];
sort(b+1,b+u+1);
for (i=1;i<=u;i++)
if (bs(s-b[i])==1)
{bool ok=0;
for (i1=1;i1<=n&&ok==0;i1++)
for (j1=i1;j1<=n&&ok==0;j1++)
for (k1=j1;k1<=n&&ok==0;k1++)
if (a[i1]+a[j1]+a[k1]==b[i])
printf("%ld %ld %ld ",a[i1],a[j1],a[k1]),ok=1;
for (i1=1;i1<=n;i1++)
for (j1=i1;j1<=n;j1++)
for (k1=j1;k1<=n;k1++)
if (a[i1]+a[j1]+a[k1]==s-b[i])
{
printf("%ld %ld %ld\n",a[i1],a[j1],a[k1]);
return 0;
}
}
printf("-1");
return 0;
}