Pagini recente » Cod sursa (job #2959822) | Cod sursa (job #645130) | Cod sursa (job #1505562) | Cod sursa (job #1303191) | Cod sursa (job #855523)
Cod sursa(job #855523)
#include<cstdio>
#include<algorithm>
using namespace std;
#define nMax 101
int N, S, t;
int v[nMax];
struct Sums {
int x, y, z;
int s;
} p[nMax*nMax*nMax];
inline int cmp (Sums a, Sums b)
{
return a.s < b.s;
}
int main()
{
freopen ( "loto.in", "r", stdin );
freopen ( "loto.out", "w", stdout );
scanf ( "%d %d", &N, &S );
for(int i=1; i<=N; i++)
scanf ( "%d", &v[i] );
for(int i=1; i<=N; i++)
for(int j=i; j<=N; j++)
for(int k=j; k<=N; k++)
{
p[++t].x = v[i];
p[t].y = v[j];
p[t].z = v[k];
p[t].s = v[i]+v[j]+v[k];
}
sort ( p, p+t+1, cmp );
int st, dr, cen;
for(int i=1; i<=t; i++)
{
st = 1;
dr = t;
while ( st <= dr )
{
cen = (st+dr)/2;
if ( p[cen].s == S - p[i].s )
{
printf ( "%d %d %d %d %d %d\n", p[i].x, p[i].y, p[i].z, p[cen].x, p[cen].y, p[cen].z );
fclose(stdin);
return 0;
}
else if ( p[cen].s < S - p[i].s )
dr = cen-1;
else
st = cen+1;
}
}
printf ( "-1\n" );
return 0;
}