Pagini recente » Cod sursa (job #2575809) | Cod sursa (job #2666638) | Cod sursa (job #1889818) | Cod sursa (job #1549571) | Cod sursa (job #801924)
Cod sursa(job #801924)
#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 (a[i]+a[j]+a[k]>s)
ok=1;
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=1;
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;
//returnez ca sa nu mai parcurg
}
}
}
}
if (ok==0)
printf("-1");
return 0;
}