CSES - Point in Polygon

View as PDF

Points: 1700 Time limit: 1.0s Memory limit: 512M Input: stdin Output: stdout

You are given a polygon of \(n\) vertices and a list of \(m\) points. Your task is to determine for each point if it is inside, outside or on the boundary of the polygon.

The polygon consists of \(n\) vertices \((x_1,y_1), (x_2,y_2), \ldots, (x_n,y_n)\). The vertices \((x_i,y_i)\) and \((x_{i+1},y_{i+1})\) are adjacent for \(i=1, 2, \ldots, n−1\) , and the vertices \((x_1,y_1)\) and \((x_n,y_n)\) are also adjacent.

Input

  • The first input line has two integers \(n\) and \(m\): the number of vertices in the polygon and the number of points.
  • After this, there are \(n\) lines that describe the polygon. The \(i\)th such line has two integers \(x_i\) and \(y_i\).
  • You may assume that the polygon is simple, i.e., it does not intersect itself.
  • Finally, there are \(m\) lines that describe the points. Each line has two integers \(x\) and \(y\).

Output

  • For each point, print INSIDE, OUTSIDE or BOUNDARY.

Constraints

  • \(3 \ \leq \ n \ \leq \ 1000\)
  • \(1 \ \leq \ m \ \leq \ 1000\)
  • \(-10^9 \ \leq \ x_i , y_i \ \leq \ 10^9\)
  • \(-10^9 \ \leq \ x , y \ \leq \ 10^9\)

Example

Sample input

4 3
1 1
4 2
3 5
1 4
2 3
3 1
1 3

Sample output

INSIDE
OUTSIDE
BOUNDARY


Comments (4)

Most recent
Loading comments...