098 - Polygon and Point
Editorial
/
Time Limit: 2 sec / Memory Limit: 1024 MB
配点: 1000 点
問題文
N 個の点 P_1, P_2, \dots, P_N を頂点とする多角形があります。点 P_i の座標は (X_i, Y_i) であり、P_i と P_{i+1} を結ぶ線分 (i = 1, 2, \dots, N-1) は多角形の辺です。また、P_N と P_1 を結ぶ線分も多角形の辺です。
座標 (A, B) が多角形の内部に含まれているかどうかを判定するプログラムを作成してください。
制約
- 3 \leq N \leq 100000
- -10^9 \leqq X_i \leqq 10^9
- -10^9 \leqq Y_i \leqq 10^9
- -10^9 \leqq A \leqq 10^9
- -10^9 \leqq B \leqq 10^9
- 点 (A, B) は多角形の辺上にはない
- 多角形の内角がちょうど 180^{\circ} になることはない
- 入力はすべて整数
入力
入力は以下の形式で標準入力から与えられます。
N X_1 Y_1 X_2 Y_2 \vdots X_N Y_N A B
出力
座標 (A, B) が多角形の内部に含まれるなら INSIDE
、外部に含まれるなら OUTSIDE
と出力してください。
部分点
この問題では、多角形が凸多角形であるケースにすべて正解すれば、部分点として 500 点を獲得します。
入力例 1
4 0 0 3 1 2 3 0 3 2 1
出力例 1
INSIDE
多角形は以下の図のようになり、座標 (2, 1) の点はその内部に含まれます。
入力例 2
4 3 1 0 0 0 3 2 3 3 2
出力例 2
OUTSIDE
多角形は以下の図のようになり、座標 (3, 2) の点はその外部にあります。
入力例 3
6 5 5 -1 -3 5 1 -3 -5 1 1 -5 -3 0 -1
出力例 3
INSIDE
多角形は以下の図のようになり、座標 (0, -1) の点はその内部に含まれます。
入力例 4
16 0 0 8 0 8 7 7 7 7 1 1 1 1 6 5 6 5 3 3 3 3 5 2 5 2 2 6 2 6 7 0 7 4 4
出力例 4
OUTSIDE
多角形は以下の図のようになり、座標 (4, 4) の点はその外部にあります。
入力例 5
3 0 0 1000000000 671903261 671903261 1000000000 520908341 350000013
出力例 5
OUTSIDE
この入力例では、点と多角形は非常に近く、距離 10^{-9} 程度しか離れていませんが、点は多角形の外部にあります。