브라우니 자르기
시간 제한1초메모리 제한128 MB
격자를 A개의 가로 띠로 나눈 뒤 각 띠를 독립적으로 B개의 세로 조각으로 잘라, 조각 합의 최솟값을 최대로 만든다.
문제
Bessie가 직사각형 브라우니를 구웠다. 이 브라우니는 작은 브라우니 정사각형들로 이루어진 격자로 볼 수 있다(, ). 행 열 칸에는 초콜릿 칩이 개 들어 있다().
Bessie는 브라우니를 개의 덩어리로 나누어 마리의 소에게 하나씩 주려고 한다(, ). 자르는 방법은 다음과 같다. 먼저 정수 좌표를 따라 가로로 번 잘라 브라우니를 개의 가로 띠로 나눈다. 그다음 각 띠를 독립적으로 세로로 번 잘라(역시 정수 경계에서) 각 띠를 조각으로 만든다. 이렇게 하면 전체 개의 조각이 생긴다.
그 후 마리의 소가 각자 조각을 하나씩 골라 가고, 마지막 조각이 Bessie에게 남는다. 소들은 욕심이 많아 초콜릿 칩이 가장 적게 든 조각을 Bessie에게 남긴다.
Bessie가 최적으로 자른다고 할 때, 자신이 확실히 받을 수 있는 초콜릿 칩 개수의 최댓값을 구하여라.
예를 들어 칩이 다음과 같이 분포한 브라우니를 생각하자.
1 2 2 1
3 1 1 1
2 0 1 3
1 1 1 1
1 1 1 1
여기서 , 이므로 Bessie는 브라우니를 가로 띠 4개로 나누고 각 띠를 두 조각으로 잘라야 한다. 예를 들어 다음과 같이 자를 수 있다.
1 2 | 2 1
---------
3 | 1 1 1
---------
2 0 1 | 3
---------
1 1 | 1 1
1 1 | 1 1
이렇게 하면 모든 조각이 초콜릿 칩을 최소 3개씩 가지므로, 욕심 많은 소들이 먼저 조각을 가져가도 Bessie에게는 3개가 남는다.
입력
- 첫째 줄: 공백으로 구분된 네 정수 , , , .
- 둘째 줄부터 째 줄까지: 째 줄에는 개의 정수 가 공백으로 구분되어 주어진다.
출력
- 첫째 줄: Bessie가 자신의 조각으로 확실히 받을 수 있는 초콜릿 칩 개수의 최댓값을 나타내는 정수 하나.