만드는 중입니다

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

포닉스와 달구

시간 제한1.5초메모리 제한1024 MB

요약
Dalgu가 두 모서리 칸을 피해 K×K 정사각형 영역을 골라 막으면, Phoenix가 (1,1)에서 (N,N)까지 얻을 수 있는 최대 합을 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 누적 합, 행렬
정답자
아직 제출이 없습니다

문제

포닉스와 달구는 N×NN \times N 크기의 격자 위에서 놀이를 한다. 격자의 ii행 jj열 칸에는 가중치 Ai,jA_{i,j}가 적혀 있다. 놀이 방법은 다음과 같다.

  • 달구는 K×KK \times K 크기의 영역을 하나 골라서, 그 영역의 칸들을 윤이에게 선물한다. 단, 달구가 고른 영역에는 격자의 1행 1열과 NN행 NN열이 포함되면 안 된다.
  • 포닉스는 처음에 1행 1열에 있고, NN행 NN열에 도달할 때까지 이동한다. 현재 칸이 rr행 cc열이면 r+1r+1행 cc열 또는 rr행 c+1c+1열로 이동할 수 있다. 단, 격자 밖이나 윤이가 선물받은 칸으로는 이동할 수 없다.
  • 포닉스가 얻는 점수는 포닉스가 지나간 칸에 적힌 가중치의 합이다.

포닉스는 점수를 최대로 얻으려 하고, 달구는 점수가 최소가 되도록 영역을 고른다. 두 사람이 모두 최선을 다한다고 할 때, 포닉스가 얻을 수 있는 점수의 최댓값을 구하시오.

입력

첫째 줄에 격자의 크기 NN과 KK가 공백으로 구분되어 주어진다. (2≤N≤20002 \le N \le 2000; 1≤K<N1 \le K < N)

다음 NN개의 줄에는 NN개의 정수 Ai,1,Ai,2,⋯ ,Ai,NA_{i,1}, A_{i,2}, \cdots, A_{i,N}이 공백으로 구분되어 주어진다. (0≤Ai,j≤100000 \le A_{i,j} \le 10000)

출력

포닉스가 얻을 수 있는 점수의 최댓값을 출력한다.

예제1

  1. 예제 1

    입력
    5 3
    4 8 13 2 5
    0 7 7 3 12
    25 3 11 5 6
    9 12 0 28 3
    1 13 5 8 9
    
    예상 출력
    65