Pagini recente » Cod sursa (job #1739283) | Cod sursa (job #1797389) | Cod sursa (job #1076937) | Cod sursa (job #2195577) | Cod sursa (job #854363)
Cod sursa(job #854363)
#include<cstdio>
#define M 666013
using namespace std;
struct nod
{
int x;
nod *urm;
};
nod *v[M];
int a[101],n;
inline void adaug(int x)
{
int element = x % M;
nod *p = new nod;
p->x = x;
p->urm = v[element];
v[element] = p;
}
inline int cauta(int x)
{
nod *p;
int element = x % M;
for(p = v[element]; p; p = p->urm)
if(p->x == x )
return 1;
return 0;
}
inline void afisare(int s)
{
for(unsigned i = 1 ; i <= n ; i++)
for(unsigned j = 1 ; j <= n ; j++)
for(unsigned k = 1 ; k <= n ; k++)
if(a[i]+a[j]+a[k] == s)
{
printf("%d %d %d ",a[i],a[j],a[j]);
}
}
int main()
{
int S;
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d %d",&n,&S);
for(unsigned i = 1; i <= n ; i++)
scanf("%d",&a[i]);
for(unsigned i = 1; i <= n ; i++)
for(unsigned j = 1 ; j <= n ; j++)
for(unsigned k = 1 ; k <= n ; k++)
adaug(a[i]+a[j]+a[k]);
for(unsigned i = 1; i <= n ; i++)
for(unsigned j = 1 ; j <= n ; j++)
for(unsigned k = 1 ; k <= n ; k++)
if( S-a[i]-a[j]-a[k] >= 0 && cauta(S-a[i]-a[j]-a[k]) )
{
afisare(S-a[i]-a[j]-a[k]);
printf("%d %d %d",a[i],a[j],a[k]);
return 0;
}
printf("-1");
return 0;
}