CF166B Polygons

题目描述

你有一个几何学问题。给定两个非退化多边形 $ A $ 和 $ B $,它们的顶点坐标以顺时针顺序给出。多边形 $ A $ 是严格凸的,而多边形 $ B $ 是任意多边形,没有自交和自接触。对于每个多边形,任意连续三个顶点不共线。 你的任务是检查多边形 $ B $ 是否严格位于多边形 $ A $ 内部。这意味着多边形 $ B $ 的任何点都必须严格位于多边形 $ A $ 内部。“严格”意味着多边形 $ B $ 的顶点不能位于多边形 $ A $ 的边上。

输入格式

第一行包含一个整数 $ n $($ 3 \leq n \leq 10^5 $)——多边形 $ A $ 的顶点数量。接下来的 $ n $ 行每行包含两个整数 $ x_i, y_i $($ |x_i|, |y_i| \leq 10^9 $)——多边形 $ A $ 的第 $ i $ 个顶点的坐标。顶点按顺时针顺序给出。 接下来一行包含一个整数 $ m $($ 3 \leq m \leq 2 \cdot 10^4 $)——多边形 $ B $ 的顶点数量。接下来的 $ m $ 行每行包含两个整数 $ x_j, y_j $($ |x_j|, |y_j| \leq 10^9 $)——多边形 $ B $ 的第 $ j $ 个顶点的坐标。顶点按顺时针顺序给出。 多边形的顶点坐标之间用一个空格分隔。保证多边形 $ A $ 和 $ B $ 是非退化的,多边形 $ A $ 是严格凸的,多边形 $ B $ 没有自交和自接触,并且对于每个多边形,任意连续三个顶点不共线。

输出格式

输出一行问题的答案——如果多边形 $ B $ 严格位于多边形 $ A $ 内部,输出 `"YES"`,否则输出 `"NO"`(不包含引号)。