Pagini recente » Cod sursa (job #473113) | Cod sursa (job #1870644) | Cod sursa (job #2852803) | Cod sursa (job #1711918) | Cod sursa (job #182454)
Cod sursa(job #182454)
using namespace std;
#include <vector>
#include <cstdio>
#define maxh 666013
//struct nod { int v; nod *n;};
//nod *H[maxh];
int a[101],n;
vector<int>H[maxh];
inline void insert(int v)
{
int h=v%maxh;
H[h].push_back(v);
/*
nod *p=new nod;
p->v=v;
p->n=H[h];
H[h]=p;
*/
}
inline int find(int v)
{
int h=v%maxh;
for(vector<int>::iterator i=H[h].begin();i!=H[h].end();++i)
if(*i==v) return 1;
return 0;
/*
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;
}