Pagini recente » Cod sursa (job #913997) | Cod sursa (job #2167226) | Cod sursa (job #2584430) | Cod sursa (job #1638300) | Cod sursa (job #2894682)
#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, pair<uint, uint>> sums;
in >> n >> sum;
for (uint i = 0; i < n; ++i)
{
in >> nr;
nrs.push_back(nr);
}
in.close();
for (auto nr1 = nrs.begin(); nr1!=nrs.end(); ++nr1)
for (auto nr2 = nr1; nr2 != nrs.end(); ++nr2)
for (auto nr3 = nr2; nr3 != nrs.end(); ++nr3)
if (*nr1 + *nr2 + *nr3 < sum)
sums[*nr1 + *nr2 + *nr3] = make_pair(*nr1, *nr2);
for (const auto& parsum : sums)
{
const auto& diff = sums.find(sum - parsum.first);
if (diff != sums.end())
{
out << parsum.second.first << " ";
out << parsum.second.second << " ";
out << parsum.first - parsum.second.first - parsum.second.second << " ";
out << diff->second.first << " ";
out << diff->second.second << " ";
out << diff->first - diff->second.first - diff->second.second;
out.close();
return 0;
}
}
out << -1;
out.close();
return 0;
}