아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

분리하는 직선

시간 제한1초메모리 제한128 MB

요약
최대 10만 개의 직선마다 주어진 점들이 양쪽에 나뉘거나 직선 위에 닿는지 판정합니다.
난이도

보통10점 중 7점

유형
기하, 이분 탐색, 정렬
정답자
아직 제출이 없습니다

문제

평면 위에 서로 다른 nn개의 점과 mm개의 직선이 주어진다.

하나의 직선은 평면을 두 개의 반평면으로 나눈다. 이때 두 반평면은 모두 닫힌 반평면이며, 직선 자신은 두 반평면 모두에 속한다. 어떤 직선이 만드는 두 반평면 각각에 주어진 점이 적어도 하나씩 들어 있으면, 그 직선을 분리하는 직선이라고 부른다.

주어진 각 직선이 분리하는 직선인지 판정하여라.

직선 위에 정확히 놓인 점은 두 반평면 모두에 속하므로, 점 가운데 하나라도 직선 위를 지나면 그 직선은 항상 분리하는 직선이다. 즉, 모든 점이 직선을 기준으로 같은 한쪽에만 놓이고 직선 위에는 아무 점도 없을 때에만 그 직선은 분리하는 직선이 아니다.

입력

첫째 줄에 테스트 케이스의 수 ZZ (Z=1Z = 1)가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.

첫째 줄에 점의 개수 nn (1≤n≤100 0001 \le n \le 100\,000)이 주어진다. 이어지는 nn개의 줄에는 각각 한 점의 좌표를 나타내는 두 정수 xx, yy (1≤x,y≤1091 \le x, y \le 10^9)가 주어진다. 모든 점은 서로 다르다.

그 다음 줄에는 직선의 개수 mm (1≤m≤100 0001 \le m \le 100\,000)이 주어진다. 이어지는 mm개의 줄에는 각각 직선이 지나는 서로 다른 두 점의 좌표를 나타내는 네 정수 x1x_1, y1y_1, x2x_2, y2y_2 (1≤x1,y1,x2,y2≤1091 \le x_1, y_1, x_2, y_2 \le 10^9)가 주어진다.

출력

각 직선에 대해, 그 직선이 분리하는 직선이면 TAK(예)를, 아니면 NIE(아니오)를 한 줄에 하나씩 출력한다.

예제3

  1. 예제 1

    입력
    1
    4
    10 10
    20 20
    10 20
    20 10
    4
    30 30 31 31
    15 1 15 100
    1 2 2 13
    10 10 11 11
    
    예상 출력
    TAK
    TAK
    NIE
    TAK
    
  2. 예제 2

    입력
    1
    1
    5 5
    3
    5 5 6 6
    1 1 1 9
    10 1 20 1
    
    예상 출력
    TAK
    NIE
    NIE
    
  3. 예제 3

    입력
    1
    2
    1 1
    100 100
    4
    50 1 50 100
    1 1 100 100
    200 1 200 100
    1 100 2 100
    
    예상 출력
    TAK
    TAK
    NIE
    TAK