Ctrl K

Команды по желаемому размеру

Средняя
На хакатон пришли n участников с номерами от 0 до n - 1. Каждый заранее указал, в команде какого размера хочет работать: sizes[i] — желаемый размер команды участника i. Организатор собирает команды по простому правилу. Участники, которые хотят команду размера k, выстраиваются в очередь по возрастанию номеров; первые k человек из очереди образуют одну команду, следующие k — другую, и так далее. Верните список всех команд. Каждая команда — список номеров её участников. Порядок команд в ответе и порядок номеров внутри команды не важны. Гарантируется, что для каждого размера k число желающих делится на k, так что все участники распределятся.
Пример 1
sizes=[2, 1, 2, 3, 3, 3] → [[0, 2], [1], [3, 4, 5]]

Участник 1 хочет работать один: команда [1]. Двойку образуют 0 и 2, тройку — 3, 4 и 5.

Пример 2
sizes=[2, 2, 2, 2] → [[0, 1], [2, 3]]

Все хотят пары. По порядку номеров: сначала [0, 1], затем [2, 3]. Ответ [[0, 2], [1, 3]] не подходит — он нарушает правило очереди.

Пример 3
sizes=[1] → [[0]]
Ограничения
  • 1 ≤ len(sizes) ≤ 500
  • 1 ≤ sizes[i] ≤ len(sizes)
  • Для каждого k количество участников с sizes[i] = k кратно k
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЗадания с перерывом на остывание СредняяСерии подряд идущих чисел СредняяСколько гостей на конференции СредняяРазложить карты на наборы подряд СредняяКаждому числу — его удвоение Средняя
загружаем Python…
Вход
sizes=[2, 1, 2, 3, 3, 3]
Ожидается
[[0, 2], [1], [3, 4, 5]]

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