AT_abc296_g [ABC296G] Polygon and Points

题目描述

在二维坐标平面上,$x$ 轴的正方向向右,$y$ 轴的正方向向上,有一个凸 $N$ 边形 $S$。$S$ 的顶点坐标依次为 $(X_1,Y_1),\ldots,(X_N,Y_N)$,按照逆时针顺序给出。 对于 $Q$ 个点 $(A_i,B_i)$,请分别判断每个点是在 $S$ 的内部、外部还是边界上。

输入格式

输入以如下格式从标准输入给出。 > $N$ > $X_1$ $Y_1$ > $\vdots$ > $X_N$ $Y_N$ > $Q$ > $A_1$ $B_1$ > $\vdots$ > $A_Q$ $B_Q$

输出格式

输出共 $Q$ 行。第 $i$ 行输出如下之一:如果 $(A_i,B_i)$ 在 $S$ 的内部(不包括边界),输出 `IN`;如果在外部(不包括边界),输出 `OUT`;如果在边界上,输出 `ON`。

说明/提示

## 限制条件 - $3 \leq N \leq 2 \times 10^5$ - $1 \leq Q \leq 2 \times 10^5$ - $-10^9 \leq X_i, Y_i, A_i, B_i \leq 10^9$ - $S$ 是严格凸的 $N$ 边形,即所有内角都小于 $180$ 度。 - $(X_1,Y_1),\ldots,(X_N,Y_N)$ 是 $S$ 的顶点,按逆时针顺序给出。 - 所有输入均为整数。 ## 样例说明 1 $S$ 以及给定的 $3$ 个点如下图所示。第 $1$ 个点在 $S$ 的边界上,第 $2$ 个点在内部,第 $3$ 个点在外部。 ![图](https://img.atcoder.jp/abc296/828da6ca52e6b48a908ad06fa59eb9cb.png) 由 ChatGPT 4.1 翻译