Ctrl K

Тесные тройки

Средняя
Тренер шахматного клуба делит игроков на команды по три человека. Рейтинги игроков — массив ratings, его длина делится на 3. Тренер хочет, чтобы в каждой команде рейтинги любых двух игроков различались не больше чем на spread. Верните разбиение на команды в виде списка троек. Если подходящих разбиений несколько, верните лексикографически наименьшее: рейтинги внутри каждой тройки идут по возрастанию, а тройки упорядочены по возрастанию как списки. Если разбить так нельзя, верните пустой список.
Пример 1
ratings=[10, 4, 6, 12, 5, 11], spread=2 → [[4, 5, 6], [10, 11, 12]]

Тройки [4, 5, 6] и [10, 11, 12]: в каждой разброс 2.

Пример 2
ratings=[3, 3, 3, 3, 9, 9], spread=5 → []

Четыре тройки на две команды не поместятся, значит какая-то 3 окажется вместе с 9, а разница 6 больше 5.

Пример 3
ratings=[7, 1, 4], spread=6 → [[1, 4, 7]]
Ограничения
  • 3 ≤ len(ratings) ≤ 10⁵, len(ratings) делится на 3
  • 1 ≤ ratings[i] ≤ 10⁵
  • 0 ≤ spread ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамое большое число из кусков СредняяСтудии для записи СредняяНизко — высоко — низко СредняяСтрого низко — высоко СредняяОтменить как можно меньше встреч Средняя
загружаем Python…
Вход
ratings=[10, 4, 6, 12, 5, 11], spread=2
Ожидается
[[4, 5, 6], [10, 11, 12]]

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