canuc80k6903·4/50

Ba Miền Của Đa Giác

Nộp bài trên LQDOJ

Bài 69 · Geometry

Cho một đa giác đơn có đỉnh được liệt kê liên tiếp theo đường biên. Hai đỉnh tạo thành một cạnh với , và là cạnh cuối cùng. Đa giác có thể được liệt kê theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ.

Có điểm truy vấn. Với mỗi điểm, hãy xác định nó thuộc đúng một trong ba trường hợp:

  • INSIDE: nằm nghiêm ngặt bên trong đa giác;
  • OUTSIDE: nằm nghiêm ngặt bên ngoài đa giác;
  • BOUNDARY: nằm trên một cạnh hoặc trùng một đỉnh của đa giác.

Input

  • Dòng đầu chứa hai số nguyên .
  • dòng tiếp theo, mỗi dòng chứa hai số nguyên - tọa độ đỉnh .
  • dòng cuối, mỗi dòng chứa hai số nguyên - một điểm truy vấn.

Output

  • Với mỗi điểm truy vấn, in INSIDE, OUTSIDE hoặc BOUNDARY trên một dòng.

Constraints

  • .
  • .
  • Mọi tọa độ nằm trong đoạn .
  • Các đỉnh đôi một khác nhau và đa giác là đa giác đơn: các cạnh không kề nhau không có điểm chung.
  • Diện tích đa giác dương.

Scoring

  • Subtask ( điểm): và trị tuyệt đối mọi tọa độ không quá .
  • Subtask ( điểm): không có giới hạn bổ sung.

Example

Test 1

Input

6 6
0 0
8 0
8 6
5 6
5 2
0 2
1 1
6 4
3 4
5 4
8 6
-1 1

Output

INSIDE
INSIDE
OUTSIDE
BOUNDARY
BOUNDARY
OUTSIDE

Giải thích: Hai điểm đầu nằm trong hai phần của đa giác chữ L, còn nằm trong phần lõm bị khuyết. Hai điểm tiếp theo lần lượt nằm trên cạnh đứng và tại một đỉnh, trong khi nằm ngoài toàn bộ đa giác.

Lời giải tóm tắt
  • Ý tưởng: Trước hết, với mỗi cạnh , ta kiểm tra điểm truy vấn có thẳng hàng với và nằm trong hộp bao của đoạn hay không. Nếu có, đáp án là BOUNDARY.
  • Ý tưởng: Với điểm còn lại, bắn một tia ngang từ sang phải. Chỉ xét các cạnh có đúng một đầu mút nằm cao hơn ; quy tắc nửa mở này làm một giao tại đỉnh chỉ được đếm một lần. Dấu tích có hướng cho biết giao điểm của cạnh với đường ngang nằm bên phải hay bên trái , nên không cần phép chia số thực. Mỗi giao bên phải đảo trạng thái trong/ngoài.
  • Ý tưởng: Tia bắt đầu ở vô cực, nơi chắc chắn ở ngoài. Vì vậy số giao lẻ cho INSIDE, còn số giao chẵn cho OUTSIDE.
  • Ý tưởng: Độ phức tạp là thời gian và bộ nhớ. Các phép nhân trung gian dùng số nguyên 128 bit.