만드는 중입니다

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

울타리에 갇힌 소 (Gold)

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

요약
격자로 나뉜 목장의 모든 구역이 통하도록 제거하는 울타리 길이 합을 최소화합니다.
난이도

보통10점 중 7점

유형
최소 신장 트리, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

농부 존은 자기 소가 넓게 트인 공간을 무서워한다는 사실을 알아차렸다. 소가 풀을 뜯을 때 덜 무서워하도록, 그는 넓은 목초지에 남북 방향(세로) 울타리와 동서 방향(가로) 울타리를 세워 여러 구역으로 나눴다.

목초지는 (0,0)(0,0)과 (A,B)(A,B)를 마주 보는 꼭짓점으로 하는 직사각형이다. 존은 서로 다른 위치 a1,…,ana_1, \ldots, a_n에 세로 울타리를 nn개 세웠고(0≤n≤20000 \le n \le 2000, 0<ai<A0 < a_i < A), 위치 aia_i의 울타리는 (ai,0)(a_i, 0)에서 (ai,B)(a_i, B)까지 이어진다. 또 서로 다른 위치 b1,…,bmb_1, \ldots, b_m에 가로 울타리를 mm개 세웠고(0≤m≤20000 \le m \le 2000, 0<bi<B0 < b_i < B), 위치 bib_i의 울타리는 (0,bi)(0, b_i)에서 (A,bi)(A, b_i)까지 이어진다. 세로 울타리는 가로 울타리와 모두 교차하므로 목초지는 (n+1)(m+1)(n+1)(m+1)개의 구역으로 나뉜다.

그런데 존은 울타리에 문을 내는 것을 완전히 잊어버렸다. 그래서 소는 자기가 있는 구역을 벗어나 목초지 전체를 돌아다니지 못한다. 존은 울타리 일부를 걷어내 이웃한 구역 사이를 오갈 수 있게 하려 한다. 이웃한 두 구역을 골라 그 둘을 가르는 울타리를 길이 전체에 걸쳐 걷어내는 방식만 쓴다. 이렇게 뚫은 통로를 지나 소가 목초지 어디로든 갈 수 있어야 한다.

예를 들어 울타리가 이렇게 놓여 있으면

+---+--+
|   |  |
+---+--+
|   |  |
|   |  |
+---+--+

다음처럼 걷어낼 수 있다.

+---+--+
|      |
+---+  +
|      |
|      |
+---+--+

존이 걷어내야 하는 울타리 길이의 합의 최솟값을 구하라.

입력

첫 줄에 AA, BB, nn, mm이 주어진다(1≤A,B≤1091 \le A, B \le 10^9). 다음 nn개의 줄에 a1,…,ana_1, \ldots, a_n이 한 줄에 하나씩 주어지고, 그다음 mm개의 줄에 b1,…,bmb_1, \ldots, b_m이 한 줄에 하나씩 주어진다.

출력

걷어내야 하는 울타리 길이의 합의 최솟값을 출력한다. 이 값은 32비트 정수 범위를 넘을 수 있으므로 64비트 정수형(C나 C++의 long long 등)이 필요할 수도 있다.

예제2

  1. 예제 1

    입력
    15 15 5 2
    2
    5
    10
    6
    4
    11
    3
    
    예상 출력
    44
    
  2. 예제 2

    입력
    10 10 1 1
    5
    5
    
    예상 출력
    15