Pagini recente » Cod sursa (job #849360) | Cod sursa (job #1962138) | Cod sursa (job #2222951) | Cod sursa (job #180463) | Cod sursa (job #41391)
Cod sursa(job #41391)
#include <cstdio>
#define maxn 666013
#define maxlog 13
#include <algorithm>
#include <hash_map.h>
using namespace std;
int n, S, x[128];
int H[maxn+15][maxlog+2][5+3];
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];
if(val==0) h1=0;
else h1=val%maxn;
if(h1==0) h2=0; else 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;
}