Ctrl K

Выровнять дырявые кувшины

Средняя
Есть несколько кувшинов, в jugs[i] литров воды в i-м. Хочется, чтобы во всех кувшинах воды стало поровну. Переливать можно сколько угодно раз и любое количество, не обязательно целое. Но при каждом переливании проливается spill_percent процентов перелитого: если перелить k литров, до другого кувшина дойдёт только k · (100 − spill_percent) / 100. Верните наибольший уровень, который можно получить сразу во всех кувшинах. Ответ принимается с точностью до 10⁻⁵.
Пример 1
jugs=[2, 8], spill_percent=50 → 4.0

Перельём 4 литра из второго кувшина в первый: половина, 2 литра, прольётся, и в первом станет 2 + 2 = 4, а во втором 8 − 4 = 4.

Пример 2
jugs=[0, 3, 6], spill_percent=0 → 3.0

Без потерь можно просто поделить 9 литров поровну — по 3 в каждом.

Пример 3
jugs=[5, 5], spill_percent=90 → 4.999990463256836
Ограничения
  • 1 ≤ len(jugs) ≤ 10⁵
  • 0 ≤ jugs[i] ≤ 10⁵
  • 0 ≤ spill_percent ≤ 99
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПоиск в сдвинутом отсортированном массиве СредняяПервая и последняя копия СредняяПоиск в таблице-цепочке СредняяПоиск в сдвинутом массиве с повторами СредняяМинимум в сдвинутом списке Средняя
загружаем Python…
Вход
jugs=[2, 8], spill_percent=50
Ожидается
4.0

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