크기가 모두 같은 피자 상자가 있다. 상자는 n행 m열 격자의 칸마다 하나씩 쌓아 올려 더미를 이루고, 각 칸의 더미 높이는 서로 모두 다르다. 격자를 정면에서 보면 각 열에서 가장 높은 더미의 높이가 보이고, 옆에서 보면 각 행에서 가장 높은 더미의 높이가 보인다.
정면도와 측면도를 그대로 유지하면서 상자를 최대 몇 개까지 치울 수 있는지 구하자. 그림 I.1(a)는 높이 격자이고, 그림 I.1(b)는 그 격자의 두 시점이다. 그림 I.2는 그림 I.1(a)에서 상자를 최대한 치우고 남은 격자다. 그림에 적힌 숫자는 그 칸에 쌓인 상자의 개수다.

그림 I.1. (a) 높이 격자와 (b) 그에 대응하는 두 시점.

그림 I.2. 상자를 치우고 남은 높이 격자.
원래의 정면도와 측면도를 바꾸지 않으면서 치울 수 있는 상자의 최대 개수를 구하는 프로그램을 작성하라.