만드는 중입니다

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

매칭

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

요약
두 점 집합 A와 B가 주어질 때, B를 평행이동해 두 집합을 모두 담는 띠의 최소 너비를 구합니다.
난이도

어려움10점 중 9점

유형
기하, 수학
정답자
아직 제출이 없습니다

문제

기하 매칭 문제에서는 두 기하 도형 AA와 BB가 주어진다. 목표는 BB를 변환하여 변환된 BB가 AA에 최대한 가까워지도록 만드는 것이다. AA와 변환된 BB 사이의 거리는 미리 정해진 거리 함수로 측정하며, 이 거리를 최소화하는 변환을 구한다.

이 문제는 더 단순한 변형이다. AA와 BB는 평면 위의 유한한 점 집합이고, BB에 허용되는 변환은 평행이동뿐이다. 벡터 v=(vx,vy)v = (v_x, v_y)만큼 평행이동한 BB는 다음과 같다.

B+v={(x+vx,y+vy)∣(x,y)∈B}.B + v = \{(x + v_x, y + v_y) \mid (x, y) \in B\}.

임의의 벡터 vv에 대해 거리 함수 f(v)f(v)는 AA와 B+vB + v의 모든 점을 사이에 두는 두 평행선의 수직 거리 중 가능한 가장 작은 값이다. f(v)f(v)를 최소화하는 벡터 vv를 찾고, f(v)f(v)의 값을 출력한다.

A={(0,0),(0,100)}A = \{(0,0), (0,100)\}과 B={(23,56),(123,56)}B = \{(23,56), (123,56)\}를 보자. 그림 (a)에서 AA의 점은 빨간색, BB의 점은 파란색이다. v=(−73,−6)v = (-73, -6)일 때, 그림 (b)는 AA와 B+vB + v를 보여 주며, 두 평행선의 거리는 d=502d = 50\sqrt{2}이다. 이 두 직선은 AA와 B+vB + v의 모든 점을 사이에 두고 있으며 가능한 가장 작은 수직 거리를 가진다. 따라서 f(v)=df(v) = d이다. 이는 모든 벡터에 걸쳐 ff의 최솟값이므로, v=(−73,−6)v = (-73, -6)은 최적의 평행이동이다.

입력

첫 줄에 두 정수 nn (1≤n≤200,0001 \le n \le 200{,}000)과 mm (1≤m≤200,0001 \le m \le 200{,}000)이 주어진다. nn은 AA의 점 개수이고, mm은 BB의 점 개수이다. 이어지는 nn개의 줄에는 AA의 각 점의 좌표가 공백으로 구분된 두 정수로 주어진다. 그다음 mm개의 줄에는 같은 형식으로 BB의 각 점의 좌표가 주어진다. 모든 좌표는 −106-10^6 이상 10610^6 이하이다. 같은 좌표의 점이 AA나 BB에 여러 번 나올 수 있다.

출력

최적의 벡터 vv에 대한 f(v)f(v) 값인 실수 zz를 한 줄에 출력한다. 출력은 정수부, 소수점, 소수부로 이루어지며, zz는 f(v)−10−6<z<f(v)+10−6f(v) - 10^{-6} < z < f(v) + 10^{-6}을 만족해야 한다.

예제2

  1. 예제 1

    입력
    2 2
    0 0
    0 100
    23 56
    123 56
    
    예상 출력
    70.710678
    
  2. 예제 2

    입력
    7 5
    0 0
    99 0
    47 31
    36 4
    10 2
    71 5
    45 17
    98 97
    89 96
    101 96
    132 113
    122 110
    
    예상 출력
    31.000000