Pagini recente » Cod sursa (job #1731182) | Cod sursa (job #2617992) | Cod sursa (job #752793) | Cod sursa (job #1718852) | Cod sursa (job #42447)
Cod sursa(job #42447)
//(c) Mircea Dima :p
#include <cstdio>
#define maxn 100003
#define maxlog 27
#include <algorithm>
#include <hash_map.h>
using namespace std;
int n, S, x[128];
int H[maxn+2][maxlog][5];
void citire()
{
freopen("loto.in", "r", stdin);
scanf("%d %d\n", &n, &S);
for(int i=1;i<=n;i++) scanf("%d ", x+i);
}
void insert(int val, int i, int j, int k)
{
int h1=val%maxn;
int h2=h1%maxlog;
H[h1][h2][0]=val;
H[h1][h2][1]=i;
H[h1][h2][2]=j;
H[h1][h2][3]=k;
}
int find(int val)
{
int h1=val%maxn;
int h2=h1%maxlog;
if(H[h1][h2][0]==val) return 1;
return 0;
}
int main()
{
citire();
freopen("loto.out", "w", stdout);
int i, j, k;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++) insert(x[i]+x[j]+x[k], i, j, k);
int h1, h2;
int sol[7];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
{
int val=S-x[i]-x[j]-x[k];
h1=val%maxn;
h2=h1%maxlog;
if(H[h1][h2][0]==val)
{
sol[1]=x[i];
sol[2]=x[j];
sol[3]=x[k];
sol[4]=x[H[h1][h2][1]];
sol[5]=x[H[h1][h2][2]];
sol[6]=x[H[h1][h2][3]];
sort(sol+1, sol+7);
for(int r=1;r<=6;r++) printf("%d ", sol[r]);
return 0;
}
}
printf("-1\n");
return 0;
}