Ctrl K

Самый ровный разрез

Средняя
Дан массив неотрицательных чисел values длины n. Разрежем его после индекса i: левая часть — элементы с 0 по i, правая — всё, что после. Для каждой части посчитаем среднее, округлённое вниз (сумма, целочисленно делённая на количество). Если правая часть пустая, её среднее считается равным 0. **Неровность** разреза — модуль разности этих двух средних. Верните индекс i с наименьшей неровностью. Если таких несколько, верните наименьший.
Пример 1
values=[4, 0, 5, 1] → 1

Разрезы: после 0-го — |4 - 6 // 3| = 2; после 1-го — |4 // 2 - 6 // 2| = 1; после 2-го — |9 // 3 - 1| = 2; после 3-го — |10 // 4 - 0| = 2. Лучший — индекс 1.

Пример 2
values=[7, 7, 7] → 0

Уже на индексе 0 средние равны (7 и 7), а при равенстве берём наименьший индекс.

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

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