Pagini recente » Cod sursa (job #657574) | Autentificare | Cod sursa (job #2236226) | Cod sursa (job #2741153) | Cod sursa (job #108714)
Cod sursa(job #108714)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define maxn 110
#define maxx 1000010
int n,s,l;
int a[maxn];
int v[maxx];
inline int search(int x)
{
int front=1,middle,back=l;
while (front<=back)
{
middle=(front+back)/2;
if (v[middle]==x) return 1;
else if (x<v[middle]) back=middle-1;
else front=middle+1;
}
return 0;
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d %d ",&n,&s);
int i,j,k,x;
for (i=1;i<=n;i++) scanf("%d ",&a[i]);
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
for (k=1;k<=n;k++) v[++l]=a[i]+a[j]+a[k];
sort(v+1,v+l+1);
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
for (k=1;k<=n;k++)
{
x=s-a[i]-a[j]-a[k];
if (search(x))
{
printf("%d %d %d ",a[i],a[j],a[k]);
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
for (k=1;k<=n;k++)
if (a[i]+a[j]+a[k]==x)
{
printf("%d %d %d ",a[i],a[j],a[k]);
printf("\n");
return 0;
}
}
}
printf("-1\n");
return 0;
}