Cod sursa(job #498170)

Utilizator iconiKMircea Chirea iconiK Data 4 noiembrie 2010 12:50:17
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <algorithm>
#include <fstream>
#include <vector>

using namespace std; 

struct suma
{
	int x, y, z, s;

	bool operator<(suma x)
	{
		return s < x.s;
	}
};

void loto()
{
	ifstream in("loto.in"); 
	ofstream out("loto.out"); 

	int N, S; 
	in >> N >> S; 

	vector<int > a(N + 1);
	vector<suma> v(1);

	for (int i = 1; i <= N; i++)
		in >> a[i];

	for (int i = 1; i <= N; i++)
	{
		for (int j = 1; j <= N; j++)
		{
			for (int k = 1; k <= N; k++)
			{
				suma n;

				n.x = i;
				n.y = j;
				n.z = k;
				n.s = a[i] + a[j] + a[k];

				v.push_back(n);
			}
		}
	}

	sort(v.begin() + 1, v.end());

	int p = 1, u = (int) v.size() - 1;
	int poz1 = 0, poz2 = 0;

	while (p <= u)
	{
		int x = v[p].s + v[u].s;

		if (x == S)
		{
			poz1 = p;
			poz2 = u;

			break;
		}
		else if (x > S)
			u--;
		else
			p++;
	}

	if (poz2)
		out << a[v[poz1].x] << ' '
			<< a[v[poz1].y] << ' '
			<< a[v[poz1].z] << ' '
			<< a[v[poz2].x] << ' '
			<< a[v[poz2].y] << ' '
			<< a[v[poz2].z];
	else
		out << -1;
}


int main()
{
	loto();
}