Pagini recente » Cod sursa (job #232835) | Cod sursa (job #187183) | Cod sursa (job #1826957) | Cod sursa (job #605754) | Cod sursa (job #2736299)
#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;
}