A. Площадь многоугольника
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
64 мегабайта
ввод
area.in
вывод
area.out

На плоскости заданы координаты вершин многоугольника в порядке их обхода. Многоугольник не обязательно выпуклый, но не содержит самопересечений. Требуется найти его площадь.

Входные данные

Сначала записано число N — количество вершин многоугольника (3 ≤ N ≤ 100), затем N пар вещественных чисел, задающих координаты его вершин.

Выходные данные

Выведите площадь многоугольника не меньше, чем с 3 знаками после десятичной точки.

Примеры тестов

Входные данные
4
0 0
0 2
4 3.5
4 0
Выходные данные
11.0

Примечание

Если выводить вещественные числа как print(x), то иногда они будут странно отформатированы, например, будет выведено как 1e-6.

Поэтому числа с заданной точностью следует переводить в строку так:


x = 1.34
"{:.6f}".format(x) # строка "1.340000"

Для того, чтобы избежать проблем с погрешностью вашего ответа, если уловие это позволяет, следует выводить числа с максимально возможной точностью, для типа float в Питоне это 16 десятичных знаков:


print("{:.16f}".format(x))
B. Принадлежность точки выпуклому многоугольнику
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
64 мегабайта
ввод
point.in
вывод
point.out

Задан выпуклый многоугольник и точка. Нужно определить, лежит ли точка внутри этого многоугольника.

Входные данные

Задано число N (3 ≤ N ≤ 100). Далее идет N пар вещественных чисел, задающих координаты вершин многоугольника. Последние два вещественных числа задают координаты точки. Гарантируется, что точка не лежит на границе многоугольника.

Выходные данные

В выходной файл выведите сообщение YES, если точка лежит внутри многоугольника или NO, вне него.

Примеры тестов

Входные данные
3
0 0
1 0
0 1.5
10 10
Выходные данные
NO
C. Пересечение прямоугольников
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
64 мегабайта
ввод
rect.in
вывод
rect.out

На плоскости задано N прямоугольников с вершинами в точках с целыми координатами и сторонами, параллельными осям координат. Необходимо найти прямоугольник, являющийся их пересечением.

То, что это прямоугольник, докажите самостоятельно.

Входные данные

В первой строке входного файла указано число N (1 ≤ N ≤ 1500). В следующих N строках заданы по 4 целых числа x1, y1, x2, y2 — сначала координаты левого нижнего угла прямоугольника, потом правого верхнего ( - 109 ≤ x1 ≤ x2 ≤ 109,  - 109 ≤ y1 ≤ y2 ≤ 109). Обратите внимание, что прямоугольники могут вырождаться в отрезки и даже в точки.

Выходные данные

В единственную строку выходного файла поместите описание искомого прямоугольника в том же формате, в котором заданы прямоугольники во входном файле.

Если пересечение заданных прямоугольников пусто, выведите в выходной файл единственное число -1.

Примеры тестов

Входные данные
2
0 0 2 2
1 1 3 3
Выходные данные
1 1 2 2

D. Роботы
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
64 мегабайта
ввод
robot.in
вывод
robot.out

Дизайнер Вадим как никогда близок к завершению своего грандиозного проекта — оформлению главной площади города!

Главная площадь представляет собой прямоугольник шириной W и длиной H метров. Вадим задумал покрасить некоторые из квадратов 1x1 метр в зелёный цвет. Для осуществления этого проекта уже заказано N специальных роботов. Роботы умеют перемещаться в соседние по горизонтали, вертикали и диагонали квадраты, и красят все квадраты, в которых побывали. Роботы очень маленькие, поэтому они не сталкиваются друг с другом, даже если красят один квадрат.

Уже почти всё готово к началу работ и Вадим уже написал программу для роботов, состоящую из M команд. Но перед её запуском он хочет убедиться, что в результате получит именно то изображение, которое задумал. Помогите Вадиму!

Входные данные

В первой строке записаны 4 числа: W, H, N, M. В каждой из последующих N строк находятся по два целых числа xi и yi (0 ≤ xi < W, 0 ≤ yi < H) — начальные координаты роботов. В каждой из следующих M строк записана одна из следующих команд для одного из роботов:

Все роботы изначально смотрят направо. Гарантируется, что при выполнении программы ни один робот не выйдет за пределы площади.

Выходные данные

В каждой из H строк выведите по W символов — "#", если в соответствующей клетке побывал хотя бы один из роботов, и "." иначе. Клетке с координатами (0, 0) соответствует левый нижний угол.

Примеры тестов

Входные данные
10 7 3 10
3 4
6 5
8 2
left 0 2
forward 0 1
right 1 2
forward 1 1
right 2 3
forward 2 1
right 2 1
forward 2 5
left 2 31
forward 2 1
Выходные данные
..........
...#..#...
...#..#...
..........
.#......#.
..######..
..........
E. Объединение прямоугольников - 1
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
64 мегабайта
ввод
rect-union.in
вывод
rect-union.out

На плоскости задано N прямоугольников с вершинами в точках с целыми координатами и сторонами, параллельными осям координат. Необходимо найти площадь их объединения.

Входные данные

В первой строке входного файла указано число N (1 ≤ N ≤ 1500). В следующих N строках заданы по 4 целых числа x1, y1, x2, y2 — сначала координаты левого нижнего угла прямоугольника, потом правого верхнего ( - 100 ≤ x1 ≤ x2 ≤ 100,  - 100 ≤ y1 ≤ y2 ≤ 100). Обратите внимание, что прямоугольники могут вырождаться в отрезки и даже в точки.

Выходные данные

В выходной файл выведите площадь объединения прямоугольников.

Примеры тестов

Входные данные
3
1 1 3 5
5 2 7 4
2 4 6 7
Выходные данные
23
F. Объединение прямоугольников - 2
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
64 мегабайта
ввод
rect-union.in
вывод
rect-union.out

На плоскости задано N прямоугольников с вершинами в точках с целыми координатами и сторонами, параллельными осям координат. Необходимо найти площадь их объединения.

Входные данные

В первой строке входного файла указано число N (0 ≤ N ≤ 300). В следующих N строках заданы по 4 целых числа x1, y1, x2, y2 — сначала координаты левого нижнего угла прямоугольника, потом правого верхнего (0 ≤ x1 ≤ x2 ≤ 109, 0 ≤ y1 ≤ y2 ≤ 109). Обратите внимание, что прямоугольники могут вырождаться в отрезки и даже в точки.

Выходные данные

В выходной файл выведите единственное число — ответ на задачу.

Примеры тестов

Входные данные
3
1 1 3 5
5 2 7 4
2 4 6 7
Выходные данные
23