Cod sursa(job #1315501)

Utilizator radudorosRadu Doros radudoros Data 12 ianuarie 2015 21:02:23
Problema Loto Scor 85
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I Marime 1.26 kb
#include<fstream>
#include<unordered_set>
using namespace std;

ifstream fin("loto.in");
ofstream fout("loto.out");
unordered_set<int>h;
int v[101];

int main()
{
	int n;
	fin >> n;
	int s;
	fin >> s;
	for (int i = 1; i <= n; i++)
		fin >> v[i];
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			for (int k = 1; k <= n; k++)
			{
				if (h.find(v[i] + v[j] + v[k]) == h.end())
				{
					h.insert(v[i] + v[j] + v[k]);
				}
			}
		}
	}
	bool g = 0;
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			for (int k = 1; k <= n; k++)
			{
				if (h.find(s - (v[i] + v[j] + v[k])) != h.end())
				{
					fout << v[i] << ' ' << v[j] << ' ' << v[k] << ' ';
					s -= v[i] + v[j] + v[k];
					g = 1;
					break;
				}

			}
			if (g == 1)
				break;
		}
		if (g == 1)
			break;
	}

	if (g == 0)
		fout << -1;
	else
	{
		g = 0;
		for (int i = 1; i <= n; i++)
		{
			for (int j = 1; j <= n; j++)
			{
				for (int k = 1; k <= n; k++)
				{
					if (v[i] + v[j] + v[k] == s)
					{
						fout << v[i] << ' ' << v[j] << ' ' << v[k] << ' ';
						s -= v[i] + v[j] + v[k];
						g = 1;
						break;
					}

				}
				if (g == 1)
					break;
			}
			if (g == 1)
				break;
		}
	}
}