Cod sursa(job #855523)

Utilizator ioanapopaPopa Ioana ioanapopa Data 15 ianuarie 2013 01:24:32
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<cstdio>
#include<algorithm>

using namespace std;

#define nMax 101

int N, S, t;
int v[nMax];

struct Sums {
	int x, y, z;
	int s;
	} p[nMax*nMax*nMax];

inline int cmp (Sums a, Sums b)
{
	return a.s < b.s;
}

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=i; j<=N; j++)
			for(int k=j; k<=N; k++)
			{
				p[++t].x = v[i];
				p[t].y = v[j];
				p[t].z = v[k];
				p[t].s = v[i]+v[j]+v[k];
			}
	
	sort ( p, p+t+1, cmp );
	int st, dr, cen;

	for(int i=1; i<=t; i++)
	{
		st = 1;
		dr = t;

		while ( st <= dr )
		{
			cen = (st+dr)/2;
			
			if ( p[cen].s == S - p[i].s )
			{
				printf ( "%d %d %d %d %d %d\n", p[i].x, p[i].y, p[i].z, p[cen].x, p[cen].y, p[cen].z );
				fclose(stdin);

				return 0;
			}

			else if ( p[cen].s < S - p[i].s )
				dr = cen-1;
			
			else
				st = cen+1;
		}
	}

	printf ( "-1\n" );

	return 0;
}