서로 다른 거리의 최소 개수

평면 위의 임의의 점 q를 골라 n개의 주어진 정수 좌표 점까지의 유클리드 거리 중 서로 다른 값의 개수를 최소로 만든다.

어려움8기하수학완전 탐색조합론아직 제출이 없습니다시간 제한3초메모리 제한512 MB

문제

2차원 평면에서 보물찾기를 준비한다.

서로 다른 관심 지점 nn개를 이미 정해 두었고, 이를 p1,p2,,pnp_1, p_2, \dots, p_n이라고 하자. 지점 pip_i의 좌표는 정수 (xi,yi)(x_i, y_i)이다.

이제 마지막 장소가 될 점 qq를 하나 고른다. qq의 좌표는 유한해야 하지만 정수일 필요는 없다. qq가 지점 pip_i 중 하나와 같은 자리여도 된다.

마지막 장소를 흥미롭게 만들려면 qq에서 각 지점까지의 거리 중 서로 다른 값의 개수를 최소로 해야 한다. 정확히 말하면 집합

S(q)={qp1, qp2, , qpn}S(q) = \{\,|q - p_1|,\ |q - p_2|,\ \dots,\ |q - p_n|\,\}

의 크기 S(q)|S(q)|를 최소로 하는 qq를 고른다. 여기서 S(q)|S(q)|S(q)S(q)의 원소 개수이고, qpi|q - p_i|qqpip_i 사이의 유클리드 거리이다. S(q)S(q)는 집합이므로 거리 qpi|q - p_i|가 둘 이상 같으면 하나의 원소로만 센다.

지점의 좌표가 주어지면 S(q)|S(q)|의 최솟값을 구하여라.

주의: 오차가 있는 연산을 쓰면 정확히 같은 거리를 알아내기 어려울 수 있다.

입력

첫째 줄에 정수 nn (1n401 \le n \le 40)이 주어진다.

다음 nn개의 줄에는 각각 지점 pip_i의 좌표를 나타내는 정수 xix_iyiy_i (xi,yi300|x_i|, |y_i| \le 300)가 공백으로 구분되어 주어진다. nn개의 지점은 모두 서로 다르다.

출력

첫째 줄에 qq에서 모든 지점 pip_i까지의 거리 중 서로 다른 값의 최소 개수를 출력한다.

힌트

첫 번째 예제에서는 q=(0,0)q = (0, 0)으로 두면 모든 지점까지의 거리가 5로 같다. 두 번째 예제에서는 q=(1.5,1.5)q = (1.5, 1.5)로 두면 된다.