만드는 중입니다

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

조개 줍기

시간 제한2초메모리 제한512 MB

요약
N×N 격자의 각 칸에 조개 한도가 주어질 때, 한 칸의 값을 1만큼 올리거나 내리는 N번의 갱신 후마다 왼쪽 위로 향하는 단조 경로 최대 합을 모든 칸에 대해 더한 값을 구한다.
난이도

어려움10점 중 8점

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

문제

바닷가에 있는 정올시는 정사각형 격자 모양의 지역으로 나뉘어 있다. 각 지역에는 한 가구가 살고, 가장 왼쪽 위 지역에는 수산시장이 있다. 수산시장이 있는 지역에도 한 가구가 산다.

각 지역에서 수산시장으로 갈 때는 다음 두 가지 이동만 쓴다.

  1. 바로 위에 붙어 있는 지역으로 이동
  2. 바로 왼쪽에 붙어 있는 지역으로 이동

각 가구는 매일 수산시장으로 출근하면서 지나가는 지역에서 조개를 주워 수산시장에 판다. 출발하는 지역과 수산시장이 있는 지역에서도 조개를 주울 수 있다.

지역마다 자연보호를 위해 그 지역을 지나가는 한 가구가 주울 수 있는 조개 개수의 최댓값이 정해져 있다. 여러 가구가 지나가도 가구마다 그 최댓값만큼 주울 수 있을 만큼 조개는 충분하다.

예를 들어 격자의 크기가 3행 3열이고, 한 가구가 주울 수 있는 조개 개수의 최댓값이 아래 왼쪽 표와 같다고 하자.

각 지역의 가구가 하루에 수산시장에 팔 수 있는 조개 개수의 최댓값은 오른쪽 표와 같다. 맨 오른쪽 아래 지역에서 출발하는 가구는 위로 두 번, 왼쪽으로 두 번 움직이는 경로에서 8+6+7+2+3=268+6+7+2+3=26개를 주울 수 있고, 이것이 그 지역의 최댓값이다. 아홉 지역의 최댓값을 모두 더하면 3+5+12+7+9+18+12+15+26=1073+5+12+7+9+18+12+15+26=107이다.

정올시의 성실한 공무원들은 주기적으로 각 지역의 조개 수를 조사해 한 가구가 주울 수 있는 조개 개수의 최댓값을 고친다. 급격한 변화는 위험하므로 한 번의 조정은 최댓값을 +1+1 또는 −1-1만큼만 바꾼다. 조정하지 않은 지역의 최댓값은 그대로 유지된다. 예를 들어 위 왼쪽 표에서 1행 2열의 22가 33으로 바뀌면 두 표는 다음과 같이 바뀐다.

각 칸의 최댓값의 초기 상태와 변화 명령이 주어진다. 초기 상태와 각 변화 직후에 대해, 모든 지역이 하루에 수산시장에 팔 수 있는 조개 개수 최댓값의 합을 구하는 프로그램을 작성하라.

입력

첫째 줄에 격자의 행과 열의 개수를 나타내는 정수 NN이 주어진다 (2≤N≤15002 \le N \le 1500).

다음 NN개의 줄에는 각 칸에서 주울 수 있는 조개 개수의 최댓값이 맨 윗 행부터 한 줄에 한 행씩 주어진다. 한 행의 값은 가장 왼쪽 열부터 차례로 나열되며, 모두 00 이상 10001000 이하이다.

다음 NN개의 줄에는 변화 명령이 한 줄에 하나씩 주어진다. 각 명령은 문자 U 또는 D로 시작하고, 빈칸 하나를 사이에 두고 행 번호와 열 번호가 차례로 주어진다. U는 그 칸에서 주울 수 있는 조개 개수의 최댓값을 11 늘리고, D는 11 줄인다. 줄인 결과가 음수가 되는 경우는 없다. 각 명령은 앞의 명령이 모두 적용된 상태에 적용된다.

출력

첫째 줄에 초기 상태에서 모든 지역이 하루에 팔 수 있는 조개 개수 최댓값의 합을 출력한다. 이어서 변화 명령을 순서대로 하나씩 적용할 때마다, 적용한 뒤의 합을 한 줄에 하나씩 출력한다. 전체 출력은 N+1N+1줄이다.

예제6

  1. 예제 1

    입력
    3
    3 2 7
    4 2 6
    5 3 8
    U 1 2
    D 3 2
    U 1 2
    
    예상 출력
    107
    111
    110
    114
    
  2. 예제 2

    입력
    2
    0 5
    5 0
    D 1 2
    U 2 1
    
    예상 출력
    15
    14
    16
    
  3. 예제 3

    입력
    4
    0 0 0 0
    0 0 0 0
    0 0 0 0
    0 0 0 0
    U 1 1
    U 1 1
    U 1 1
    U 1 1
    
    예상 출력
    0
    16
    32
    48
    64
    
  4. 예제 4

    입력
    5
    6 6 6 6 6
    6 6 6 6 6
    6 6 6 6 6
    6 6 6 6 6
    6 6 6 6 6
    D 4 5
    U 4 5
    D 2 5
    U 5 2
    U 4 3
    
    예상 출력
    750
    749
    750
    749
    753
    756
    
  5. 예제 5

    입력
    4
    1000 1000 1000 1000
    1000 1000 1000 1000
    1000 1000 1000 1000
    1000 1000 1000 1000
    U 4 4
    D 4 4
    U 1 1
    D 2 3
    
    예상 출력
    64000
    64001
    64000
    64016
    64015
    
  6. 예제 6

    입력
    5
    3 3 3 3 3
    3 3 3 3 3
    3 3 4 3 3
    3 3 3 3 3
    3 3 3 3 3
    D 3 3
    D 3 3
    D 3 3
    D 3 3
    U 3 3
    
    예상 출력
    384
    375
    374
    373
    372
    373