Pagini recente » Cod sursa (job #1581793) | Cod sursa (job #2672936) | Monitorul de evaluare | Cod sursa (job #1582864) | Cod sursa (job #801950)
Cod sursa(job #801950)
#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,poz1,poz2,poz3,poz11,poz21,poz31;
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=i;j<=n;j++)
for (k=j;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<=u;i++)
if (bs(s-b[i])==1&&ok==0)
{
//afisez solutii
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])
poz1=a[i1],poz2=a[j1],poz3=a[k1];
if (a[i1]+a[j1]+a[k1]==s-b[i]&&ok==0)
{
poz11=a[i1],poz21=a[j1],poz31=a[k1];
if (poz1!=0&&poz2!=0&&poz3!=0)
ok=1;
}
}
}
if (ok==0)
printf("-1");
else
printf("%ld %ld %ld %ld %ld %ld",poz1,poz2,poz3,poz11,poz21,poz31);
return 0;
}