Cod sursa(job #2894460)

Utilizator widzAndrei-Daniel Tava widz Data 27 aprilie 2022 20:52:28
Problema Loto Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <unordered_map>
#include <vector>
using namespace std;


int main()
{

	ifstream in("loto.in");
	ofstream out("loto.out");
	using uint = unsigned int;
	uint n, sum, nr;
	vector<uint> nrs;
	unordered_map<uint, uint> sums2;
	unordered_map<uint, tuple<uint, uint, uint>> sums4;
	in >> n >> sum;
	for(uint i=0; i<n;++i)
	{
		in >> nr;
		nrs.push_back(nr);
	}
	in.close();

	for(const auto& nr1 : nrs)
		for(const auto& nr2 : nrs)
			sums2[nr1 + nr2] = nr1;
	for (const auto& sum1 : sums2)
		for (auto& sum2 : sums2)
			sums4[sum1.first + sum2.first] = make_tuple(sum1.second, sum1.first - sum1.second, sum2.second);

	for(const auto& parsum : sums2)
	{
		const auto& diff = sums4.find(sum - parsum.first);
		if(diff != sums4.end())
		{
			out << parsum.second<<" ";
			out << parsum.first - parsum.second <<" ";
			out << get<0>(diff->second)<< " ";
			out << get<1>(diff->second) << " ";
			out << get<2>(diff->second) << " ";
			out << diff->first - get<0>(diff->second) - get<1>(diff->second) - get<2>(diff->second);
			out.close();
			return 0;
		}
	}
	out << -1;
	out.close();
	return 0;
}