배열 복원하기

면접 대비

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

요약
배열 A를 아래로 X칸, 오른쪽으로 Y칸 옮긴 배열과 겹쳐 겹치는 칸을 더해 만든 배열 B가 주어질 때 A를 복원한다.
난이도

보통10점 중 5점

유형
행렬, 시뮬레이션, 구현, 동적 계획법
정답자
아직 제출이 없습니다

문제

크기가 H×WH \times W인 배열 AA와 두 정수 XX, YY가 있을 때, 크기가 (H+X)×(W+Y)(H + X) \times (W + Y)인 배열 BB는 배열 AA와 배열 AA를 아래로 XX칸, 오른쪽으로 YY칸 이동시킨 배열을 겹쳐 만들 수 있다. 수가 겹쳐지면 수가 합쳐진다.

즉, 배열 BB의 (i,j)(i, j)에 들어있는 값은 다음 세 가지 중 하나이다.

  • (i,j)(i, j)가 두 배열 모두에 포함되지 않으면, Bi,j=0B_{i,j} = 0이다.
  • (i,j)(i, j)가 두 배열 모두에 포함되면, Bi,j=Ai,j+Ai−X,j−YB_{i,j} = A_{i,j} + A_{i-X,j-Y}이다.
  • (i,j)(i, j)가 두 배열 중 하나에만 포함되면, Bi,j=Ai,jB_{i,j} = A_{i,j} 또는 Ai−X,j−YA_{i-X,j-Y}이다.

배열 BB와 정수 XX, YY가 주어졌을 때, 배열 AA를 구해보자.

입력

첫째 줄에 네 정수 HH, WW, XX, YY가 주어진다. 둘째 줄부터 H+XH + X개의 줄에 배열 BB의 원소가 주어진다.

항상 배열 AA가 존재하는 경우만 입력으로 주어진다.

출력

총 HH개의 줄에 배열 AA의 원소를 출력한다.

제한

  • 2≤H,W≤3002 \le H, W \le 300
  • 1≤X<H1 \le X < H
  • 1≤Y<W1 \le Y < W
  • 0≤Bi,j≤1,0000 \le B_{i,j} \le 1,000

예제2

  1. 예제 1

    입력
    2 4 1 1
    1 2 3 4 0
    5 7 9 11 4
    0 5 6 7 8
    
    예상 출력
    1 2 3 4
    5 6 7 8
    
  2. 예제 2

    입력
    3 3 2 1
    1 2 3 0
    4 5 6 0
    7 9 11 3
    0 4 5 6
    0 7 8 9
    
    예상 출력
    1 2 3
    4 5 6
    7 8 9