Pagini recente » Cod sursa (job #2909802) | Cod sursa (job #2259070) | Cod sursa (job #2848188) | Cod sursa (job #579033) | Cod sursa (job #849242)
Cod sursa(job #849242)
#include <cassert>
#include <cstdio>
#include <algorithm>
using namespace std;
int v[105];
struct str
{
int s,t1,t2;
};
str d[1000005];
inline int comp(str x,str y)
{
return x.s<y.s;
}
int main()
{
int n=0,s=0,i=0,j=0,k=0,st=0,dr=0;
assert(freopen("loto.in","r",stdin));
assert(freopen("loto.out","w",stdout));
assert(scanf("%d%d",&n,&s));
for (i=0; i<n; ++i)
assert(scanf("%d",&v[i]));
for (i=0; i<n; ++i)
for (j=0; j<n; ++j)
for (k=0; k<n; ++k)
{
d[dr].s=v[i]+v[j]+v[k];
d[dr].t1=v[i];
d[dr].t2=v[j];
++dr;
}
sort(d,d+dr,comp);
st=0;
--dr;
while (st<=dr)
{
if (d[st].s+d[dr].s==s)
break;
if (d[dr].s+d[dr].s<s || d[st].s+d[st].s>s)
{
st=dr+1;
break;
}
if (d[st].s+d[dr].s<s)
++st;
else
--dr;
}
if (st<=dr)
assert(printf("%d %d %d %d %d %d\n",d[st].s-d[st].t1-d[st].t2,d[st].t1,d[st].t2,d[dr].s-d[dr].t1-d[dr].t2,d[dr].t1,d[dr].t2));
else
assert(printf("-1\n"));
return 0;
}