diff --git a/src/tasks/001.hpp b/src/tasks/001.hpp index 8367e9d..385191f 100644 --- a/src/tasks/001.hpp +++ b/src/tasks/001.hpp @@ -1,10 +1,41 @@ #pragma once +#include +#include +#include + namespace alg::tasks { + // Есть набор чисел, необходимо из них создать такую перестановку + // при котором разности их величин будутминимально отличаться. + // Т.е. как бы максимально их уравнять inline void run() { + // { x, y } + // x - число + // y - просто номер чтоб не потеряться когда увидим перестановку + std::vector> data { { 1, 0 }, { 2, 1 }, { 3, 2 }, { 4, 3 } }; + std::sort(data.begin(), data.end()); + auto n = data.size(); + + // работа такая + // берем четные в порядке возрастания + for (std::size_t i = 0; i < n; i += 2) + std::cout << data[i].second << ' '; + + // потом нечетные в порядке убывания + for (int i = n - 1- n % 2; i >= 1; i -=2) + std::cout << data[i].second << ' '; + std::cout << std::endl; + + // циферки выводим + for (std::size_t i = 0; i < n; i += 2) + std::cout << data[i].first << ' '; + + for (int i = n - 1- n % 2; i >= 1; i -=2) + std::cout << data[i].first << ' '; + std::cout << std::endl; } }