Pagini recente » Cod sursa (job #2999079) | Cod sursa (job #1333019) | Cod sursa (job #2237089) | Cod sursa (job #2827749) | Cod sursa (job #182450)
Cod sursa(job #182450)
#include <cstdio>
#define maxh 666013
struct nod { int v; nod *n;};
nod *H[maxh];
int a[101],n;
inline void insert(int v)
{
int h=v%maxh;
nod *p=new nod;
p->v=v;
p->n=H[h];
H[h]=p;
}
inline int find(int v)
{
int h=v%maxh;
for(nod* p=H[h]; p; p=p->n)
if(p->v==v) return 1;
return 0;
}
inline void afis(int S)
{
int i, j, k;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
for(k=1;k<=n;++k)
if(a[i]+a[j]+a[k]==S)
{
printf("%d %d %d ", a[i], a[j], a[k]);
return ;
}
}
int main()
{
int i, j, k, S;
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d %d\n", &n, &S);
for(i=1;i<=n;++i) scanf("%d ", a+i);
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
for(k=1;k<=n;++k)
insert(a[i]+a[j]+a[k]);
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
for(k=1;k<=n;++k)
if(S-a[i]-a[j]-a[k]>=0 && find(S-a[i]-a[j]-a[k]))
{
afis(S-a[i]-a[j]-a[k]);
printf("%d %d %d\n", a[i], a[j], a[k]);
return 0;
}
printf("-1\n");
return 0;
}