eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

История

История

Жил-был мальчик, которого звали Артем. Однажды Артем отправился на поиски счастья. Артем шел и шел, пока не стемнело. В этой темноте был спящий Дракон. Дракон был окружен белыми камнями. Из книги "Как поймать дракона" Артем знает, что некоторые из этих камней он должен раскрасить так, чтобы дракон лежал внутри раскрашенных камней. После этого дракон будет пойман. Каждый камень может находиться в двух состояниях: раскрашен / не раскрашен. Камни можно представить в виде вершин выпуклого многоугольника, а дракона --- в виде набора точек. Ваша задача --- посчитать, сколько существует способов покрасить камни так, чтобы поймать дракона. \InputFile Первая строка содержит два целых числа $n$ и $m~(3 \le n \le 5000, 0 \le m \le 5000)$. Следующие $n$ строк содержат по два целых числа --- координаты вершин выпуклого многоугольника. Гарантируется, что они даны либо по часовой стрелке, либо против часовой стрелки, и никакие три точки не лежат на одной прямой. Следующие $m$ строк задают точки, принадлежащие дракону. Каждая из них содержит по два целых числа --- координаты дракона, которые не превышают по модулю $10^9$. \OutputFile Выведите ответ по модулю $10^9 + 7$. \Examples При $m = 0$ Вы можете раскрасить любое подмножество камней, которое внутри себя содержит непустую область. Раскрашивать следует всякое подмножество камней, чтобы их выпуклая оболочка покрывала все $m$ точек дракона и содержала внутри себя непустую область (камней должно быть как минимум 3). Если точка дракона лежит на границе выпуклой оболочки, то считаем ее покрытой.
Лимит времени 2 секунды
Лимит использования памяти 256 MiB
Входные данные #1
4 1
-5 -5
5 -5
5 5
-5 5
-4 -3
Выходные данные #1
3
Входные данные #2
4 0
0 0
10 0
10 10
0 10
Выходные данные #2
5