Cod sursa(job #505460)

Utilizator matei_cChristescu Matei matei_c Data 2 decembrie 2010 16:21:16
Problema Loto Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<stdio.h>
#include<algorithm>

using namespace std;
struct numere
{int x,y,z,s;};	

int n,v[101];
int s,p;
numere nr[1000001];

bool myfunction( numere a, numere b)
{
	if( a.s < b.s) return true;
	return false;
}

bool ok;
int main()
{
	freopen("loto.in","r",stdin);
	freopen("loto.out","w",stdout);
	scanf("%d%d",&n,&s);
	for(int i=1;i<=n;i++)
		scanf("%d",&v[i]);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			for(int k=1;k<=n;k++)
			{
				p++;
				nr[p].x=v[i];
				nr[p].y=v[j];
				nr[p].z=v[k];
				nr[p].s=nr[p].x+nr[p].y+nr[p].z;
			}	
		}	
	}	
	sort( nr + 1, nr + p + 1, myfunction);
	int lim2=p;
	int lim1=1;
	for(int i=1;i<=p;i++)
	{
		if(nr[lim1].s+nr[lim2].s==s)
		{
			printf("%d %d %d %d %d %d\n",nr[lim1].x,nr[lim1].y,nr[lim1].z,nr[lim2].x,nr[lim2].y,nr[lim2].z);
			ok=true;
			break;
		}	
		if(nr[lim1].s+nr[lim2].s<s)
		{	
			lim1++;
			continue;
		}
		if(nr[lim1].s+nr[lim2].s>s)
		{
			lim2--;
			continue;
		}	
	}	
	if(ok==false)
		printf("-1\n");
	return 0;
}