볼록껍질과 쿼리

시간 제한2초메모리 제한1024 MB

요약
볼록다각형 밖의 두 점을 주는 각 쿼리마다 다각형의 꼭짓점 N개와 두 점을 합쳐 볼록껍질 위에 놓이는 점의 개수를 구한다.
난이도

어려움10점 중 9점

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

문제

NN개의 꼭짓점을 갖는 볼록다각형 PP가 있다. PP의 꼭짓점은 반시계 방향 순으로 P_1P\_1부터 P_NP\_N까지 번호가 매겨져 있다. 또한 PP의 경계 위에 있지 않은 서로 다른 MM개의 점 Q_1,Q_2,...,Q_MQ\_1,Q\_2,...,Q\_M가 있다. 이때 다음 쿼리를 수행하는 프로그램을 작성해 보자.

  • ii jj: P_1,P_2,...,P_NP\_1,P\_2,...,P\_N과 Q_i,Q_jQ\_i,Q\_j 총 N+2N+2개의 점에 대하여 볼록껍질을 이루는 점의 개수를 출력한다. 한 변 위에 점이 33개 이상 있는 경우, 양 끝점을 제외한 나머지 점은 포함하지 않는다.

입력

첫째 줄에 NN, MM, KK가 공백으로 구분되어 주어진다. (3≤N≤30,000(3\leq N \leq 30\\,000; 3≤M,K≤200,000)3 \leq M, K \leq 200\\,000)

다음 NN개의 줄의 pp번째 줄에 P_pP\_p의 좌표 (x_p,y_p)(x\_p,y\_p)가 공백으로 구분되어 주어진다. (−106≤x_p,y_p≤106;(-10^{6} \leq x\_p,y\_p \leq 10^{6}; NN개의 점 중 어느 세 점도 한 직선 위에 있지 않다.))

다음 MM개의 줄의 qq번째 줄에 Q_qQ\_q의 좌표 (x_q,y_q)(x\_q, y\_q)가 공백으로 구분되어 주어진다. (−106≤x_q,y_q≤106)(-10^{6} \leq x\_q,y\_q \leq 10^{6})

다음 KK개의 줄에 쿼리 i,ji,j가 공백으로 구분되어 주어진다. (1≤i,j≤m(1 \leq i,j \leq m; i≠j)i \neq j)

입력으로 주어지는 모든 좌표는 서로 다르며, 입력으로 주어지는 모든 수는 정수이다.

출력

QQ개의 줄에 걸쳐 각 쿼리의 결과를 순서대로 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

    입력
    7 5 3
    -4 0
    -3 -3
    1 -4
    3 -1
    3 3
    1 6
    -4 5
    -3 9
    -8 3
    -7 -3
    0 -8
    7 1
    1 2
    2 3
    3 5
    
    예상 출력
    7
    7
    5
    
  2. 예제 2

    입력
    4 6 5
    0 0
    5 0
    5 5
    0 5
    6 0
    0 6
    6 7
    3 6
    1 1
    2 2
    1 2
    2 3
    3 4
    5 6
    4 5
    
    예상 출력
    4
    4
    4
    4
    5