Pagini recente » Cod sursa (job #2347835) | Cod sursa (job #1494747) | Cod sursa (job #3226045) | Cod sursa (job #250060) | Cod sursa (job #2894460)
#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;
}