격자로 나뉜 목장의 모든 구역이 통하도록 제거하는 울타리 길이 합을 최소화합니다.
보통7최소 신장 트리그리디정렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB농부 존은 자기 소가 넓게 트인 공간을 무서워한다는 사실을 알아차렸다. 소가 풀을 뜯을 때 덜 무서워하도록, 그는 넓은 목초지에 남북 방향(세로) 울타리와 동서 방향(가로) 울타리를 세워 여러 구역으로 나눴다.
목초지는 (0,0)과 (A,B)를 마주 보는 꼭짓점으로 하는 직사각형이다. 존은 서로 다른 위치 a1,…,an에 세로 울타리를 n개 세웠고(0≤n≤2000, 0<ai<A), 위치 ai의 울타리는 (ai,0)에서 (ai,B)까지 이어진다. 또 서로 다른 위치 b1,…,bm에 가로 울타리를 m개 세웠고(0≤m≤2000, 0<bi<B), 위치 bi의 울타리는 (0,bi)에서 (A,bi)까지 이어진다. 세로 울타리는 가로 울타리와 모두 교차하므로 목초지는 (n+1)(m+1)개의 구역으로 나뉜다.
그런데 존은 울타리에 문을 내는 것을 완전히 잊어버렸다. 그래서 소는 자기가 있는 구역을 벗어나 목초지 전체를 돌아다니지 못한다. 존은 울타리 일부를 걷어내 이웃한 구역 사이를 오갈 수 있게 하려 한다. 이웃한 두 구역을 골라 그 둘을 가르는 울타리를 길이 전체에 걸쳐 걷어내는 방식만 쓴다. 이렇게 뚫은 통로를 지나 소가 목초지 어디로든 갈 수 있어야 한다.
예를 들어 울타리가 이렇게 놓여 있으면
+---+--+
| | |
+---+--+
| | |
| | |
+---+--+
다음처럼 걷어낼 수 있다.
+---+--+
| |
+---+ +
| |
| |
+---+--+
존이 걷어내야 하는 울타리 길이의 합의 최솟값을 구하라.
첫 줄에 A, B, n, m이 주어진다(1≤A,B≤109). 다음 n개의 줄에 a1,…,an이 한 줄에 하나씩 주어지고, 그다음 m개의 줄에 b1,…,bm이 한 줄에 하나씩 주어진다.
걷어내야 하는 울타리 길이의 합의 최솟값을 출력한다. 이 값은 32비트 정수 범위를 넘을 수 있으므로 64비트 정수형(C나 C++의 long long 등)이 필요할 수도 있다.