Ctrl K

Линия равных площадей

Средняя
На стену наклеены квадратные плитки со сторонами, параллельными осям. Плитка tiles[i] = [x, y, l] имеет левый нижний угол в точке (x, y) и сторону l. Плитки могут перекрываться — площадь каждой считается отдельно, даже если она частично закрыта другой. Проведём горизонтальную линию на высоте h. Нужно, чтобы суммарная площадь частей плиток выше линии совпала с суммарной площадью частей ниже неё. Верните наименьшее такое h. Ответ принимается с точностью до 10⁻⁵.
Пример 1
tiles=[[0, 0, 2], [5, 4, 2]] → 2.0

У каждой плитки площадь 4, всего 8, значит, снизу должно остаться 4. Нижняя плитка целиком лежит ниже уровня 2, а между 2 и 4 нет ни одной плитки — самая низкая подходящая линия проходит на высоте 2.

Пример 2
tiles=[[3, 1, 4]] → 3.0

Одна плитка от высоты 1 до 5 делится пополам ровно посередине, на высоте 3.

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

Плитки перекрываются, но площадь считается для каждой отдельно: всего 8. Обе занимают высоты от 0 до 2, поэтому линия на высоте 1 делит каждую пополам.

Ограничения
  • 1 ≤ tiles.length ≤ 5·10⁴
  • tiles[i] = [x, y, l]
  • 0 ≤ x, y ≤ 10⁹
  • 1 ≤ l ≤ 10⁹
  • суммарная площадь всех плиток не превышает 10¹²
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПоиск в сдвинутом отсортированном массиве СредняяПервая и последняя копия СредняяПоиск в таблице-цепочке СредняяПоиск в сдвинутом массиве с повторами СредняяМинимум в сдвинутом списке Средняя
загружаем Python…
Вход
tiles=[[0, 0, 2], [5, 4, 2]]
Ожидается
2.0

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