Cod sursa(job #182442)

Utilizator gigi_becaliGigi Becali gigi_becali Data 20 aprilie 2008 21:54:36
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#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 bool 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, &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(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;
}