Pagini recente » Cod sursa (job #2805464) | Cod sursa (job #2701422) | Cod sursa (job #1019874) | Cod sursa (job #1667124) | Cod sursa (job #493396)
Cod sursa(job #493396)
#include <iostream>
#include <stdio.h>
using namespace std;
int n,s,i,j,v[101],vv[101],m[20000000][4],k,aux[4],ok,mij;
int bin(int x)
{
int s,d;
s=1;d=k;
mij=(s+d)/2;
while((x!=m[mij][0])&&(d-s>0))
{
if (m[mij][0]>x)
{
d=mij-1;
}
else s=mij+1;
mij=(s+d)/2;
}
if (x==m[mij][0])
{
ok=1;
}
}
int back(int p)
{
int i;
if (p==4)
{
k++;
int j,ss;
ss=0;
for (j=1;j<=3;j++)
{
m[k][j]=v[vv[j]];
ss=ss+v[vv[j]];
}
m[k][0]=ss;
}
else
{
for (i=1;i<=n;i++)
{
vv[p]=i;
back(p+1);
}
}
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d%d",&n,&s);
for (i=1;i<=n;i++)
{
scanf("%d",&v[i]);
}
back(1);
/*for (i=1;i<=k;i++)
{
for (j=i;j<=k-1;j++)
{
if (m[j][0]>m[j+1][0])
{
int z;
for (z=0;z<=3;z++)
{
aux[z]=m[j][z];
m[j][z]=m[j+1][z];
m[j+1][z]=aux[z];
}
}
}
}*/
//qsort(m[1]);
//for (i=1;i<=k;i++)
//printf("%d %d %d %d\n",m[i][0],m[i][1],m[i][2],m[i][3]);
ok=0;
//printf("%d\n",k);
for (i=1;i<=k;i++)
{
int c=0;
c=s-m[i][0];
bin(c);
//printf("%d ",m[i][0]);
if (ok==1)
{
for (j=1;j<=3;j++)
printf("%d ",m[i][j]);
for (j=1;j<=3;j++)
printf("%d ",m[mij][j]);
//printf("\n%d",mij);
i=1000000;
}
}
if (ok==0)
printf("-1");
return 0;
}