Cod sursa(job #11514)

Utilizator MaGdUtZaVasile Maria-Magdalena MaGdUtZa Data 31 ianuarie 2007 19:54:48
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<stdio.h>

#define dim 101

struct gigel
{
	long x,y,z,s;
};

int main()
{
	gigel v[dim*dim*dim];

	long a[dim],n,l=0,s,i,j,k,gresit,st,dr,m;

	freopen("loto.in","r",stdin);
	freopen("loto.out","w",stdout);

	scanf("%ld%ld", &n, &s);

	for(i=1; i<=n; ++i)

		scanf("%ld", &a[i]);

	for(i=1; i<=n; ++i)

		for(j=1; j<=n; ++j)

			for(k=1; k<=n; ++k)
			{
				v[++l].x=a[i];
				v[l].y=a[j];
				v[l].z=a[k];
				v[l].s=a[i]+a[j]+a[k];
			}
	for(i=1; i<=l; ++i)

		for(j=i+1; j<=l; ++j)

			if(v[i].s>v[j].s)
			{
				gigel aux;

				aux=v[i];
				v[i]=v[j];
				v[j]=aux;
			}
	for(i=1; i<=l; ++i)
	{
		long k=s-v[i].s;

		st=1;
		dr=l;
		gresit=0;

		while(st<=dr && !gresit)
		{
			m=(st+dr)>>1;

			if(v[m].s==k)

				gresit=1;

			else

				if(v[m].s<k)

					st=m+1;

				else

					dr=m-1;
		}
		if(gresit)
		{
			printf("%ld %ld %ld %ld %ld %ld", v[i].x, v[i].y, v[i].z, v[m].x, v[m].y, v[m].z);

			return 0;
		}
	}
	printf("-1");

	return 0;
}