Ctrl K

Достаточно сильный отрезок

Сложная
Датчик записал ряд положительных показаний readings, и задан порог bar. Отрезок длины k (несколько подряд идущих показаний) называется сильным, если **каждое** показание в нём строго больше bar / k. Чем длиннее отрезок, тем ниже планка для его элементов. Верните длину сильного отрезка или -1, если сильных отрезков нет. Гарантируется, что все сильные отрезки (если они есть) имеют одну и ту же длину, так что ответ определён однозначно.
Пример 1
readings=[2, 7, 7, 1], bar=12 → 2

Отрезок [7, 7] длины 2 подходит: 7 > 12 / 2 = 6. Одиночные показания не превышают 12, а любой отрезок длины 3 или 4 содержит 2 или 1, что слишком мало.

Пример 2
readings=[3, 3, 3], bar=9 → -1

Для длины k нужно, чтобы каждое показание было больше 9 / k, то есть 3·k > 9. Даже при k = 3 получается ровно 9, а не больше, поэтому ответ -1.

Пример 3
readings=[5, 1, 5], bar=4 → 1

Одно показание 5 уже больше 4 / 1, а любой более длинный отрезок захватывает 1.

Ограничения
  • 1 ≤ len(readings) ≤ 10⁵
  • 1 ≤ readings[i] ≤ 10⁹
  • 1 ≤ bar ≤ 10⁹
  • Все сильные отрезки имеют одинаковую длину
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДальние прыжки по полю СложнаяВода между стенами СложнаяСамый большой прямоугольник под силуэтом СложнаяСамый большой горящий блок СложнаяНаибольшее число из двух рядов Сложная
загружаем Python…
Вход
readings=[2, 7, 7, 1], bar=12
Ожидается
2

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