Cod sursa(job #21906)

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

struct blabla{long val,x1,x2,x3;};
blabla sol[maxn*maxn*maxn];
long n,s;

int sort(const void *a,const void *b)
{
	blabla c = *( blabla *) a;
	blabla d = *( blabla *) b;
	return c.val-d.val;
}

void afisare(long i,long j)
{
	printf("%ld %ld %ld %ld %ld %ld\n",sol[i].x1,sol[i].x2,sol[i].x3,sol[j].x1,sol[j].x2,sol[j].x3);
}

int main()
{
	
	freopen("loto.in","rt",stdin);
	freopen("loto.out","wt",stdout);
	
	long i,j,l,v[maxn],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].val=v[i]+v[j]+v[l];
				sol[nr].x1=i;
				sol[nr].x2=j;
				sol[nr++].x3=l;
				}
	qsort(sol,nr,sizeof(sol[0]),sort);
	t=nr-1;
	for(i=0;i<nr && t>=0 ;i++)
		{
		if(sol[i].val+sol[t].val==s) {afisare(i,t);return 0;}
		while(sol[i].val+sol[t].val>s  && t>=0) t--;
		}
	printf("-1\n");	

	
	return 0;
}