Cod sursa(job #268845)

Utilizator drag0s93Mandu Dragos drag0s93 Data 1 martie 2009 22:04:11
Problema Loto Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<stdio.h>
#include<algorithm>
#include<stdlib.h>

using namespace std;

#define IN "loto.in","r",stdin
#define OUT "loto.out","w",stdout
#define Nmax 120

struct pereche{
	int sum,x,y,z;
};

int n,s,sum,nr=1;
int v[Nmax];

pereche sol[1000000];

void citire()
{
	freopen(IN);
	scanf("%d%d",&n,&s);
	for(int i=1;i<=n;++i)
		scanf("%d",&v[i]);
}
void form()
{
	for(int i=1;i<=n;++i)
		for(int j=i;j<=n;++j)
			for(int p=j;p<=n;++p)
			{
				sol[nr].x=v[i];
				sol[nr].y=v[j];
				sol[nr].z=v[p];
				sol[nr++].sum=v[i]+v[j]+v[p];
			}	
}
void afisare(int st,int dr)
{
	freopen(OUT);
	printf("%d %d %d %d %d %d\n",sol[st].x,sol[st].y,sol[st].z,sol[dr].x,sol[dr].y,sol[dr].z);
}
int cmp(struct pereche a,struct pereche b)
{
	return a.sum<b.sum;
}
void solve()
{
	int st=1,dr=nr;
	for(;st<=dr;++st)
	{
		
		if(sol[dr].sum+sol[st].sum==s)
		{
			afisare(st,dr);
			return ;
		}
		while(sol[dr].sum+sol[st].sum>s)
		{
			sol[dr].sum=0;
			--dr;
		}
	}
	printf("-1\n");
}
int main()
{
	freopen(OUT);
	citire();
	form();
	sort(sol+1,sol+nr+1,cmp);
	solve();
	return 0;
}