Cod sursa(job #125993)

Utilizator za_wolfpalianos cristian za_wolf Data 20 ianuarie 2008 22:46:45
Problema Loto Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<stdio.h>
#define NMAX 101
#define MMAX 1000001
long s,in,sf,y[MMAX],x[NMAX],i,j,n,m,k,l,w;
struct kkt
{
long a,b,c;
};
kkt q[MMAX];
int main()
{
	freopen("loto.in","r",stdin);
	freopen("loto.out","w",stdout);
	scanf("%ld%ld",&n,&k);
	for (i=1;i<=n;i++)
		scanf("%ld",&x[i]);

	for (i=1;i<=n;i++)
		for (j=1;j<=n;j++)
			for (l=1;l<=n;l++)
			{
				y[++y[0]]=x[i]+x[j]+x[l];
				q[y[0]].a=x[i];
				q[y[0]].b=x[j];
				q[y[0]].c=x[l];
			}
	for (i=1;i<=y[0];i++)
	{
		s=k-y[i];
		in=1;
		sf=y[0];
		while (in<=sf)
		{
			l=(in+sf)/2;
			if (y[l]==s) {printf("%ld %ld %ld %ld %ld %ld\n",q[i].a,q[i].b,q[i].c,q[l].a,q[l].b,q[l].c); return 0;}
			if (y[sf]==s) {l=sf;printf("%ld %ld %ld %ld %ld %ld\n",q[i].a,q[i].b,q[i].c,q[l].a,q[l].b,q[l].c); return 0;}
			if (y[in]==s) {l=in;printf("%ld %ld %ld %ld %ld %ld\n",q[i].a,q[i].b,q[i].c,q[l].a,q[l].b,q[l].c); return 0;}
			if (y[l]<s) in=l+1;
			else
			sf=l-1;
		}

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