Pagini recente » Cod sursa (job #576810) | Cod sursa (job #840441) | Cod sursa (job #648061) | Cod sursa (job #1395910) | Cod sursa (job #1833274)
#include <cstdio>
using namespace std;
const int prim=103,mod=1000007;
int hashh[mod+1],v[110];
void add_hash(int x)
{
x=(1LL*x*prim)%mod;
int y=x;
while(hashh[x]!=0 && hashh[x]!=y)
{
x++;
if(x==mod) x=0;
}
hashh[x]=y;
}
int find_hash(int x)
{
x=(1LL*x*prim)%mod;
int p=0,y=x;
while(hashh[x]!=0)
{
if(hashh[x]=y) {p=1;break;}
x++;
if(x==mod) x=0;
}
return p;
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
int n,s,sol=-1,r4,r5,r6,a;
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=1;j<=n;j++)
for(int k=1;k<=n;k++)
add_hash(v[i]+v[j]+v[k]);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
{
a=v[i]+v[j]+v[k];
a=s-a;
if(a>=0) if(find_hash(a)==1) {r4=v[i];r5=v[j];r6=v[k];sol=a;break;}
}
if(sol==-1) {printf("-1");return 0;}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
if(v[i]+v[j]+v[k]==sol) {printf("%d %d %d ",v[i],v[j],v[k]);printf("%d %d %d",r4,r5,r6);return 0;}
return 0;
}