Cod sursa(job #21909)

Utilizator marius135Dumitran Adrian Marius marius135 Data 25 februarie 2007 01:30:03
Problema Loto Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<stdio.h>
#include<stdlib.h>
#define maxn 101


long sol[maxn*maxn*maxn];
long v[maxn];
long n,s;

int sort(const void *a,const void *b)
{
	return *(long *) a- *(long *)b;
}

void afisare(long a)
{
	long i,j,l;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			for(l=1;l<=n;l++)
				if(v[i]+v[j]+v[l]==sol[a]) {printf("%ld %ld %ld",v[i],v[j],v[l]);return ;}
	
}

int main()
{
	
	freopen("loto.in","rt",stdin);
	freopen("loto.out","wt",stdout);
	
	long i,j,l,t;
	
	scanf("%ld%ld",&n,&s);
	for(i=1;i<=n;i++)
		scanf("%ld",&v[i]);
	long nr=0;
	
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			for(l=1;l<=n;l++)
				{
				sol[nr++]=v[i]+v[j]+v[l];
				}
	qsort(sol,nr,sizeof(sol[0]),sort);
	t=nr-1;
	for(i=0;i<nr && t>=0 ;i++)
		{
		while(sol[i]+sol[t]>s  && t>=0) t--;
		if(t<0) break;
		if(sol[i]+sol[t]==s) {afisare(i);printf(" ");afisare(t);printf("\n");return 0;}
		}
	printf("-1\n");	

	
	return 0;
}