Pagini recente » Cod sursa (job #2584815) | Cod sursa (job #1856093) | Cod sursa (job #1700450) | Cod sursa (job #817690) | Cod sursa (job #1997496)
#include <algorithm>
#include <cstdio>
using namespace std;
struct suma
{
int s, a, b, c;
}sum[1000002];
int i, j, k, sx, n, aux, st, dr, m, nr, x[101], sol[7];
bool ok;
bool cmp(suma x, suma y)
{
return x.s<y.s;
}
int main()
{
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
scanf("%d%d", &n, &sx);
for(i=1; i<=n; ++i)
scanf("%d", &x[i]);
for(i=1; i<=n; ++i)
{
for(j=1; j<=n; ++j)
{
for(k=1; k<=n; ++k)
{
sum[++nr].s=x[i]+x[j]+x[k];
sum[nr].a=x[i];
sum[nr].b=x[j];
sum[nr].c=x[k];
}
}
}
sort(sum+1, sum+nr+1, cmp);
ok=0;
for(i=1; i<=n && !ok; ++i)
{
for(j=1; j<=n && !ok; ++j)
{
for(k=1; k<=n && !ok; ++k)
{
st=1; dr=nr;
aux=sx-x[i]-x[j]-x[k];
while(st<=dr && !ok)
{
m=(st+dr)/2;
if(sum[m].s<aux) st=m+1;
else if(sum[m].s>aux) dr=m-1;
else
{
sol[1]=sum[m].a;
sol[2]=sum[m].b;
sol[3]=sum[m].c;
sol[4]=x[i];
sol[5]=x[j];
sol[6]=x[k];
sort(sol+1, sol+7);
ok=1;
}
}
}
}
}
if(ok) printf("%d %d %d %d %d %d", sol[1], sol[2], sol[3], sol[4], sol[5], sol[6]);
else printf("-1");
return 0;
}