만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

구간 최근접 점 쌍 질의

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

요약
n개의 점과 q개의 구간 [l, r]이 주어질 때, 각 구간 안에서 가장 가까운 두 점의 거리 제곱을 구합니다.
난이도

어려움10점 중 9점

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

문제

최근접 점 쌍 문제는 계산 기하학에서 잘 알려진 문제이다. 유클리드 평면 위에 nn개의 점 p1,p2,…,pnp_1,p_2,\ldots,p_n이 있다. qq개의 질의가 주어진다. ii번째 질의에서는 두 정수 ℓi\ell_i와 rir_i (1≤ℓi<ri≤n1\leq \ell_i< r_i\leq n)가 주어진다. 각 질의마다 ℓi≤u<v≤ri\ell_i\leq u<v\leq r_i를 만족하는 점 쌍 (u,v)(u,v) 가운데, 점 pup_u와 pvp_v 사이의 유클리드 거리 (xu−xv)2+(yu−yv)2\sqrt{(x_u-x_v)^2+(y_u-y_v)^2}가 최소인 쌍을 찾아야 한다.

입력

첫 줄에 점의 개수 nn과 질의의 개수 qq가 주어진다 (2≤n≤250 0002 \leq n\leq 250\,000, 1≤q≤250 0001\leq q\leq 250\,000).

다음 nn개 줄에는 pip_i의 좌표 xix_i와 yiy_i가 주어진다 (1≤xi,yi≤1081\leq x_i,y_i\leq 10^8).

이어서 다음 qq개 줄에 질의 ℓi\ell_i와 rir_i가 주어진다 (1≤ℓi<ri≤n1\leq \ell_i< r_i\leq n).

출력

각 질의마다 해당 구간에서 최근접 쌍의 값 (xu−xv)2+(yu−yv)2(x_u-x_v)^2+(y_u-y_v)^2을 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    5 5
    2 4
    1 1
    3 3
    5 1
    4 2
    1 5
    2 3
    2 4
    3 5
    1 3
    
    예상 출력
    2
    8
    8
    2
    2
    
  2. 예제 2

    입력
    2 1
    1 1
    1 1
    1 2
    
    예상 출력
    0