Pagini recente » Cod sursa (job #534912) | Cod sursa (job #1887247) | Cod sursa (job #38962) | Cod sursa (job #49990) | Cod sursa (job #2733087)
#include <fstream>
std::ifstream fin("loto.in");
std::ofstream fout("loto.out");
#include <vector>
#include <algorithm>
#include <unordered_map>
#include <tuple>
#include <unordered_map>
int main()
{
unsigned N;
int S;
fin >> N >> S;
std::vector<int> vec;
vec.reserve(N);
for(unsigned i = 0; i < N; ++i)
{
int value;
fin >> value;
vec.push_back(value);
}
std::unordered_map<int, std::tuple<unsigned char, unsigned char, unsigned char>> sums;
sums.reserve(N * N * N);
for(unsigned i = 0; i < N; ++i)
{
for(unsigned j = i; j < N; ++j)
{
for(unsigned k = j; k < N; ++k)
{
sums[S - (vec[i] + vec[j] + vec[k])] = {i, j, k};
}
}
}
for(unsigned i = 0; i < N; ++i)
{
for(unsigned j = i; j < N; ++j)
{
for(unsigned k = j; k < N; ++k)
{
const int currentsum = vec[i] + vec[j] + vec[k];
const auto it = sums.find(currentsum);
if(it != sums.cend())
{
const auto& tup = it->second;
fout << vec[i] << ' ' << vec[j] << ' ' << vec[k] << ' ';
fout << vec[std::get<0>(tup)] << ' ' << vec[std::get<1>(tup)] << ' '
<< vec[std::get<2>(tup)] << '\n';
return 0;
}
}
}
}
fout << -1 << '\n';
}