Ctrl K

Площадь объединения прямоугольников

Сложная
На плоскости лежат прямоугольники со сторонами, параллельными осям. Прямоугольник rects[i] = [x1, y1, x2, y2] задан левым нижним углом (x1, y1) и правым верхним (x2, y2). Найдите общую площадь, которую они покрывают. Место, где прямоугольники перекрываются, считается один раз. Ответ может быть очень большим, поэтому верните его по модулю 10⁹ + 7.
Пример 1
rects=[[0, 0, 4, 2], [2, 1, 5, 4]] → 15

Площади 8 и 9, общий кусок от (2, 1) до (4, 2) площадью 2 считается один раз: 8 + 9 - 2 = 15.

Пример 2
rects=[[1, 1, 3, 3], [0, 0, 6, 6]] → 36

Маленький прямоугольник целиком внутри большого, ответ — площадь большого, 36.

Пример 3
rects=[[0, 0, 100000, 100000]] → 999999937

Площадь 10¹⁰ берём по модулю 10⁹ + 7.

Ограничения
  • 1 ≤ len(rects) ≤ 200
  • len(rects[i]) = 4
  • 0 ≤ x1, y1, x2, y2 ≤ 10⁹
  • x1 < x2, y1 < y2
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКонтур городской застройки СложнаяМеньшие справа СложнаяСуммы отрезков в заданной полосе СложнаяПары с крутым спадом СложнаяТёмный промежуток между фонарями Сложная
загружаем Python…
Вход
rects=[[0, 0, 4, 2], [2, 1, 5, 4]]
Ожидается
15

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