Cod sursa(job #2736299)

Utilizator vali_27Bojici Valentin vali_27 Data 3 aprilie 2021 12:40:06
Problema Loto Scor 85
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

int n, S, v[100];
 
struct Info {
	int sum;
	int x, y, z;
	bool operator<(const Info& o)
	{
		return sum < o.sum;
	}
	int operator+(const Info& o) { return sum + o.sum; }
	friend std::ostream& operator<<(std::ostream& out, const Info& o)
	{
		out << o.x << ' ' << o.y << ' ' << o.z;
		return out;
	}
};
 

int main() 
{
	std::ifstream f("loto.in");
	std::ofstream g("loto.out");

	
	f >> n >> S;
	std::vector<Info> sums;
	sums.reserve(n * n * n);

	for (int i = 0; i < n; ++i)
		f >> v[i];
	 

	for (int i = 0; i < n; ++i)
		for (int j = 0; j < n; ++j)
			for (int k = 0; k < n; ++k)
			{
				int sum3 = v[i] + v[j] + v[k];
				sums.push_back({ sum3, v[i], v[j], v[k] });
			}
	
	std::sort(sums.begin(), sums.end());

	int left = 0, right = n * n * n - 1;
	while (left <= right)
	{
		if (sums[left] + sums[right] < S)left++;
		else if (sums[left] + sums[right] > S)right--;
		else
		{
			g << sums[left] << ' ' << sums[right];
			return 0;
		}
	}
	g << -1;
}