
도시를 북쪽에서 남쪽으로 흐르는 두 개의 강이 있고, 각 강을 따라 집들이 그림처럼 늘어서 있다. 양쪽 강가에 사는 사람들이 서로 더 빨리 오갈 수 있도록, 두 강을 잇는 다리를 하나 놓으려고 한다.
왼쪽 강은 세로선 x=−1이고, 오른쪽 강은 세로선 x=1이다. 다리는 두 강 위의 한 지점씩을 잇는, x축에 평행한 선분으로 나타낸다. 집의 위치는 각 세로선 위의 점으로 주어진다.
왼쪽 집들은 (−1,ai) (i=1,…,n)에, 오른쪽 집들은 (1,bj) (j=1,…,m)에 있다. 다리를 높이 h에 놓으면(즉 두 점 (−1,h)와 (1,h)를 잇는 다리), 왼쪽 집 ai에서 다리를 건너 오른쪽 집 bj까지 가는 거리는 ∣ai−h∣+2+∣h−bj∣이다.
모든 (왼쪽 집, 오른쪽 집) 쌍에 대한 이 거리의 합
∑i,jd(ai,bj)=∑i,j(∣ai−h∣+2+∣h−bj∣)
을 최소로 만드는 다리의 높이 h를 구하는 프로그램을 작성하라.
첫째 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스의 첫째 줄에는 두 정수 n과 m이 주어진다 (1≤n,m≤106). n은 왼쪽 강의 집 수, m은 오른쪽 강의 집 수이다. 이어지는 n개의 줄에는 왼쪽 집의 위치 ai가 한 줄에 하나씩, 그다음 m개의 줄에는 오른쪽 집의 위치 bj가 한 줄에 하나씩 주어진다 (∣ai∣,∣bj∣≤107). 모든 위치는 정수이다.
각 테스트 케이스마다 거리의 합을 최소로 만드는 높이 h를 소수점 첫째 자리까지 한 줄에 출력한다. 그런 h가 여러 개이면 가장 작은 값을 출력한다.