Pagini recente » Cod sursa (job #2479330) | Cod sursa (job #1992485) | Cod sursa (job #271249) | Cod sursa (job #472196) | Cod sursa (job #801938)
Cod sursa(job #801938)
#include<cstdio>
#include<algorithm>
using namespace std;
long long b[1000007];
long a[107];
long n,s,u;
inline bool bs(long long val)//cautare binara
{
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]);
//sume
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
for (k=1;k<=n;k++)
b[++u]=a[i]+a[j]+a[k];
sort(b+1,b+u+1);//sortez
bool ok=0;
for (i=1;i<=n&&ok==0;i++)
for (j=1;j<=n&&ok==0;j++)
for (k=1;k<=n&&ok==0;k++)
if (bs(s-a[i]-a[j]-a[k])==1&&ok==0)
{
//afisez solutii
printf("%ld %ld %ld ",a[i],a[j],a[k]);
for (i1=1;i1<=n&&ok==0;i1++)
for (j1=1;j1<=n&&ok==0;j1++)
for (k1=1;k1<=n&&ok==0;k1++)
if (a[i1]+a[j1]+a[k1]==s-a[i]-a[j]-a[k]&&ok==0)
{
printf("%ld %ld %ld\n",a[i1],a[j1],a[k1]);
ok=1;
}
}
if (ok==0)
printf("-1");
return 0;
}