В столбик вводятся 2×N целых не равных нулю чисел — координаты левых верхних вершин квадратов размером 1000×1000 (N>0). Последовательность заканчивается двумя нулями. Вывести площадь пересечения всех этих квадратов — области, которая входит в каждый из них. Оси координат направлены вправо и вниз — это стандартная практика для компьютерных изображений.
-10 10 100 100 -300 -200 0 0
Здесь три квадрата с координатами вершин
- (-10,10)-(-10,1010)-(990,1010)-(990, 10)
- (100,100)-(100,1100)-(1100,1100)-(1100,100),
- и (-300,-200)-(-300,700)-(700,800)-(700,-200).
Их пересечение (фигура, принадлежащая всем трём квадратам) имеет вид прямоугольника с координатами вершин (100,100)-(100,800)-(700,800)-(700,100). Ширина этого прямоугольника — 700-100=600, высота 800-100=700, площадь 600*700=420000
420000
А вот квадраты с левыми верхними углами (10,10), (600, 700), и (-500, 200) не имеют фигуры, которая принадлежит всем им сразу, поэтому ответ был бы 0.
Замечание: если хотя бы два квадрата не пересекаются или только касаются, ответ 0
Возможно, понадобятся функции max() и min() (а возможно, и нет)
- Подсказка:
- Пересечение двух таких квадратов — это прямоугольник, размеры которого не больше 1000×1000
Пересечение такого прямоугольника со следующим квадратом — всегда прямоугольник (проверьте!)
- Дальше должно быть понятно ☺. Если нет — см. в спойлер
Спойлер (нажмите ссылку «комментарии» в заголовке страницы, и он откроется):