Pagini recente » Cod sursa (job #541820) | Cod sursa (job #601882) | Cod sursa (job #1616505) | Cod sursa (job #2434571) | Cod sursa (job #1730465)
#include <cstdio>
#include <algorithm>
#define DMax 1000005
#define NMax 105
using namespace std;
int v[DMax];
int x[NMax];
int main(){
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
int t,i,j,k,N,S,rez,st,dr,mid,s1,s2,s3,s4,s5,s6,ok;
scanf("%d %d",&N,&S);
for( i = 1; i <= N; ++i ) scanf("%d",&x[i]);
for( t = 1, i = 1; i <= N; ++i )
for( j = 1; j <= N; ++j )
for( k = 1; k <= N; ++k )
v[t++] = x[i] + x[j] + x[k];
sort( v + 1, v + t );
for( ok = 0, i = 1; i <= N; ++i )
for( j = 1; j <= N; ++j )
for( k = 1; k <= N; ++k )
{
rez = S - x[i] - x[j] - x[k];
for( st = 1, dr = t - 1; st <= dr; )
{
mid = (st + dr)/2;
if( v[mid] > rez ) dr = mid - 1;
else if( v[mid] < rez ) st = mid + 1;
else { ok = 1; s1 = i; s2 = j; s3 = k; i = j = k = N + 1; break; }
}
}
if(!ok) printf("-1\n");
else
{
for( i = 1; i <= N; ++i )
for( j = 1; j <= N; ++j )
for( k = 1; k <= N; ++k )
if( x[i] + x[j] + x[k] == rez )
{
s4 = i;
s5 = j;
s6 = k;
i = j = k = N + 1;
}
printf("%d %d %d %d %d %d\n",x[s1],x[s2],x[s3],x[s4],x[s5],x[s6]);
}
return 0;
}