add task_001

This commit is contained in:
2025-10-18 20:14:39 +03:00
parent 14fade1510
commit 11d3ebe26a

View File

@@ -1,10 +1,41 @@
#pragma once #pragma once
#include <vector>
#include <algorithm>
#include <iostream>
namespace alg::tasks namespace alg::tasks
{ {
// Есть набор чисел, необходимо из них создать такую перестановку
// при котором разности их величин будутминимально отличаться.
// Т.е. как бы максимально их уравнять
inline void run() inline void run()
{ {
// { x, y }
// x - число
// y - просто номер чтоб не потеряться когда увидим перестановку
std::vector<std::pair<int, int>> 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;
} }
} }