문제 링크
- https://icpc.me/16885
시간복잡도
- $O(N \log N)$
풀이
두 벡터가 서로 반대 방향 사분면에 위치하는 경우가 최적이라는 것은 쉽게 알 수 있습니다.
사분면을 마음대로 결정할 수 있으므로 모든 벡터를 1사분면으로 옮기면, 1사분면 상의 벡터 $(x_1, y_1)$과 3사분면으로 이동시킨 벡터 $(-x_2, -y_2)$를 더한 결과 $(x_1-x_2, y_1-y_2)$의 길이는 $\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}$입니다. 결국 모든 점을 1사분면으로 옮긴 다음 가장 가까운 두 점을 구하면 문제를 해결할 수 있습니다.
전체 코드
1 |
|