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

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

서로 다른 거리의 최소 개수

시간 제한3초메모리 제한512 MB

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

어려움10점 중 8점

유형
기하, 수학, 완전 탐색, 조합론
정답자
아직 제출이 없습니다

문제

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)={ ∣q−p1∣, ∣q−p2∣, …, ∣q−pn∣ }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)의 원소 개수이고, ∣q−pi∣|q - p_i|는 qq와 pip_i 사이의 유클리드 거리이다. S(q)S(q)는 집합이므로 거리 ∣q−pi∣|q - p_i|가 둘 이상 같으면 하나의 원소로만 센다.

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

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

입력

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

다음 nn개의 줄에는 각각 지점 pip_i의 좌표를 나타내는 정수 xix_i와 yiy_i (∣xi∣,∣yi∣≤300|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)로 두면 된다.

예제3

  1. 예제 1

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

    입력
    4
    0 0
    1 1
    2 2
    3 3
    
    예상 출력
    2
    
  3. 예제 3

    입력
    6
    0 -5
    1 0
    -1 0
    2 3
    3 2
    -3 0
    
    예상 출력
    3