Pagini recente » Cod sursa (job #2882639) | Cod sursa (job #2577813) | Cod sursa (job #681347) | Cod sursa (job #226606) | Cod sursa (job #1558696)
#include<cstdio>
#include<algorithm>
using namespace std;
int n,s,pp,q;
int v[101],st[7];
bool vc[100000001];
void back(int k)
{if(pp==0)
{if(k==6)
{int i;
if(s-st[0]>=0&&s-st[0]<=100000000&&vc[s-st[0]]==1)
{for(i=1;i<=5;i++)
printf("%d ",v[st[i]]);
printf("%d ",s-st[0]);
pp=1;
}
}
else
{int i;
for(i=st[k-1];i<=q;i++)
if(st[0]+v[i]<=s&&s-st[0]-v[i]<=(6-k)*v[n-1])
{st[0]+=v[i];
st[k]=i;
back(k+1);
st[0]-=v[i];
}
else
i=n+1;
}
}
}
int main ()
{freopen ("loto.in","r",stdin);
freopen ("loto.out","w",stdout);
int i;
scanf("%d%d",&n,&s);
for(i=0;i<n;i++)
{scanf("%d",&v[i]);
vc[v[i]]=1;
}
sort(v,v+n);
q=-1;
for(i=0;i<n;i++)
if(v[i]+5*v[1]<=s&&6*v[i]>=s)
q=i;
if(q==-1)
{printf("-1");
return 0;
}
back(1);
if(pp==0)
printf("-1");
return 0;
}