실행 시간 제한 | 메모리 제한 |
---|---|
2 초 | 512 MB |
아티스트 민수는 큰 갤러리를 운영하고 있습니다. 이 갤러리에서는 다양한 전시를 준비하기 위해 큰 화면을 여러 개의 작은 구역으로 나누려고 합니다. 그는 수직 (남-북) 및 수평 (동-서)으로 파티션을 설치하여 전시 공간을 나눕니다.
대형 갤러리는 꼭지점이 과 인 직사각형입니다. 민수는 개의 수직 파티션 ()을 () 위치에 설치합니다. 각 파티션은 에서 까지 뻗어있습니다. 그는 또한 개의 수평 파티션 ()을 위치 ()에 설치합니다. 각 파티션은 에서 까지 뻗어있습니다. 각 수직 파티션은 수평 파티션을 통과하여 대형 갤러리를 총 구역으로 나눕니다.
불행하게도, 민수는 전시 작품을 이동시킬 때 문제가 될 수 있는 파티션의 입구를 설치하는 것을 완전히 잊었습니다! 그는 이 문제를 해결하기 위해 일부 파티션의 부분을 제거하여 인접한 구역 간의 이동을 가능하게 하려고 합니다. 인접한 두 구역 사이의 전체 파티션 길이를 제거하여, 작품들이 큰 갤러리의 어디든지 이동할 수 있게 하고 싶습니다.
예를 들어, 민수가 이런 식으로 파티션을 설치했다면
+---+--+
| | |
+---+--+
| | |
| | |
+---+--+
이렇게 개방할 수 있습니다:
+---+--+
| |
+---+ +
| |
| |
+---+--+
민수가 그의 목표를 달성하기 위해 제거해야 할 파티션의 최소 길이를 계산해주세요.
첫 번째 입력 줄에는 , , , ()이 포함됩니다. 다음 줄에는 이 포함되고, 그 다음 줄에는 이 포함됩니다.
민수가 제거해야 할 파티션의 최소 길이를 출력하세요.
주의: 이 값은 표준 32비트 정수에 맞지 않을 수 있으므로 64비트 정수 유형 (예: C/C++의 "long long")을 사용해야 할 수도 있습니다.
15 15 5 2 2 5 10 6 4 11 3
44
출처: USACO 2016 February Contest, Platinum Problem 2. Fenced In