베시는 직사각형 모양의 브라우니를 만들어서 RxC(1 <= R <= 500; 1 <= C <= 500)개의 작은 정사각형 조각들로 잘라내고 각 조각의 i행, j열에 N_ij (0 <= N_ij <= 4,000)개의 초콜릿 칩을 넣었다.
베시는 브라우니를 A*B마리의 소들이 먹을 수 있도록 하기 위해 A*B(1 <= A <= R; 1 <= B <= C)개의 직사각형 묶음으로 나눈다. 이때 그녀는 먼저 브라우니를 A-1번 가로 방향으로 잘라서 생겨난 A개의 조각들을 각각 따로 B-1번 세로 방향으로 잘라서 A*B개의 직사각형 묶음으로 만든다. 그런데 욕심 많은 A*B-1 마리의 소들이 언제나 남아있는 묶음들 중에서 가장 초콜릿 칩이 많은 것만을 골라서 가져가기 때문에 베시는 항상 가장 적은 개수의 초콜릿 칩이 있는 묶음을 가지게 된다.
브라우니에 들어간 초콜릿 칩의 개수들이 주어질 때, 베시가 가장 많이 먹을 수 있는 초콜릿 칩의 개수를 구하시오.
아래 예제는 5x4짜리 브라우니가 주어졌을 때의 경우이다.
1 2 2 1 3 1 1 1 2 0 1 3 1 1 1 1 1 1 1 14*2개의 묶음으로 나눠야 한다고 할 때 가장 많은 초콜릿 칩을 얻을 수 있는 방법은 아래와 같다.
1 2 | 2 1 --------- 3 | 1 1 1 --------- 2 0 1 | 3 --------- 1 1 | 1 1 1 1 | 1 1소들이 초콜릿 칩이 많은 묶음만을 차지하려 하므로, 베시는 최대 3조각을 얻을 수 있다.
입력 5 4 4 2 1 2 2 1 3 1 1 1 2 0 1 3 1 1 1 1 1 1 1 1 출력 3
출처:usaco 2011 MAR gold 번역:shinism