Ctrl K

Ровно k разных шагов

Средняя
Даны числа n и k. Нужно выстроить числа от 1 до n (каждое ровно один раз) в последовательность, у которой модули разностей соседних элементов принимают ровно k разных значений. Таких последовательностей обычно много, поэтому строим одну конкретную: 1. Первые k элементов берём попеременно из оставшихся чисел: сначала наименьшее, потом наибольшее, потом снова наименьшее и так далее. 2. Оставшиеся числа дописываем подряд, продолжая брать с той же стороны, что и k-й элемент: если он был наименьшим из оставшихся — по возрастанию, если наибольшим — по убыванию. Верните полученную последовательность. Убедитесь, что разных разностей в ней действительно ровно k.
Пример 1
n=6, k=3 → [1, 6, 2, 3, 4, 5]

По очереди: 1 (меньшее), 6 (большее), 2 (меньшее). Последним брали меньшее, так что дальше 3, 4, 5. Разности 5, 4, 1, 1, 1 — три разных значения.

Пример 2
n=5, k=2 → [1, 5, 4, 3, 2]

1, затем 5; последним брали большее, так что дальше 4, 3, 2. Разности 4, 1, 1, 1 — два разных значения.

Пример 3
n=4, k=1 → [1, 2, 3, 4]
Ограничения
  • 1 ≤ k < n ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПовернуть квадрат по часовой СредняяПостфиксный калькулятор СредняяПрокрутка массива вправо СредняяПростые числа до границы СредняяN-е число из заданных простых Средняя
загружаем Python…
Вход
n=6, k=3
Ожидается
[1, 6, 2, 3, 4, 5]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 74 теста на сервере, включая скрытые.