Ctrl K

Три полосы плиток

Средняя
Есть квадратное поле size × size, начало координат в левом нижнем углу. На нём лежат прямоугольные плитки tiles, где tiles[i] = [x1, y1, x2, y2]: (x1, y1) — левый нижний угол плитки, (x2, y2) — правый верхний. Плитки не перекрываются (касаться сторонами могут). Можно сделать два разреза через всё поле — либо оба горизонтальных, либо оба вертикальных. Разрезы делят поле на три полосы, и нужно, чтобы: - ни одна плитка не была разрезана — каждая целиком лежит в одной полосе; - в каждой из трёх полос была хотя бы одна плитка. Верните True, если такие разрезы существуют, и False иначе.
Пример 1
size=6, tiles=[[0, 0, 2, 3], [2, 1, 4, 6], [4, 0, 6, 2], [4, 3, 6, 5]] → True

Вертикальные разрезы по x = 2 и x = 4 дают три полосы: в первой плитка [0, 0, 2, 3], во второй [2, 1, 4, 6], в третьей две оставшиеся.

Пример 2
size=4, tiles=[[0, 0, 2, 2], [2, 0, 4, 2], [0, 2, 2, 4], [2, 2, 4, 4]] → False

Это сетка 2×2: по каждой оси плитки разбиваются только на две полосы, третьей не получить.

Пример 3
size=5, tiles=[[0, 0, 5, 1], [1, 1, 3, 3], [0, 3, 2, 5], [3, 4, 5, 5]] → True
Ограничения
  • 3 ≤ size ≤ 10⁹
  • 3 ≤ len(tiles) ≤ 10⁵
  • 0 ≤ x1 < x2 ≤ size
  • 0 ≤ y1 < y2 ≤ size
  • Плитки не перекрываются
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиТройки с нулевой суммой СредняяСумма тройки ближе всего к цели СредняяЧетыре числа с заданной суммой СредняяРазличные перестановки с повторами СредняяРазложить анаграммы по группам Средняя
загружаем Python…
Вход
size=6, tiles=[[0, 0, 2, 3], [2, 1, 4, 6], [4, 0, 6, 2], [4, 3, 6, 5]]
Ожидается
True

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