Ctrl K

Партии для сортировки с повторами

Сложная
На конвейере в ряд стоят коробки, их веса записаны в массиве weights (веса могут повторяться). Ряд режут на несколько непрерывных партий, после чего коробки внутри каждой партии сортируют по весу независимо от остальных, а партии снова ставят в исходном порядке. Нужно, чтобы в итоге весь ряд оказался отсортирован по неубыванию. Верните наибольшее число партий, на которое можно разрезать ряд.
Пример 1
weights=[3, 1, 2, 5, 4, 4] → 2

Можно разбить на [3, 1, 2] и [5, 4, 4]: после сортировки частей получаем [1, 2, 3, 4, 4, 5]. Любой другой разрез ломает порядок — например, 5 должна оказаться после обеих 4.

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

Единица должна встать раньше обеих двоек, поэтому первые три коробки идут одной партией, а 3 — отдельной.

Пример 3
weights=[7, 7, 7] → 3

Одинаковые веса уже стоят по порядку, каждую коробку можно сделать отдельной партией.

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

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