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