Pagini recente » Cod sursa (job #1728981) | Cod sursa (job #423085) | Cod sursa (job #1832568) | Cod sursa (job #973943) | Cod sursa (job #1732290)
#include <cstdio>
#include <algorithm>
#include <vector>
#define MOD 7919
using namespace std;
int N,v[1005],F,Sum;
struct Hash
{
int x,y,z,S;
}C;
struct OUT
{
int x,y,z;
bool b;
}Out,out;
vector <Hash> H[MOD];
int f(int val)
{
return val%MOD;
}
void Add(int x1,int x2,int x3)
{
F=f(v[x1]+v[x2]+v[x3]);
C.x=x1;
C.y=x2;
C.z=x3;
C.S=v[x1]+v[x2]+v[x3];
H[F].push_back(C);
}
OUT Search(int val)
{
F=f(val);
out.b=false;
for(int i=0;i<H[F].size();i++)
if(H[F][i].S==val)
{
out.b=true;
out.x=H[F][i].x;
out.y=H[F][i].y;
out.z=H[F][i].z;
return out;
}
return out;
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d%d",&N,&Sum);
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(i,j,k);
for (int i=0;i<=MOD;i++)
for(int j=0;j<H[i].size();j++)
{
Out=Search(Sum-H[i][j].S);
if (Out.b)
{
printf("%d %d %d %d %d %d",v[H[i][j].x],v[H[i][j].y],v[H[i][j].z],v[Out.x],v[Out.y],v[Out.z]);
return 0;
}
}
printf("-1");
return 0;
}