만드는 중입니다

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

사이런 코드

면접 대비

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

요약
절댓값이 1 이하이고 C22가 0이 아닌 2x2 행렬 C로 인코딩된 행렬 A가 주어질 때, 원래 행렬 B를 복원합니다.
난이도

보통10점 중 5점

유형
동적 계획법, 구현
정답자
아직 제출이 없습니다

문제

사이런의 메시지를 전투함 갤럭티카가 가로챘다. 메시지는 정수로 이루어진 n×mn \times m 행렬 AA이며, 암호화되어 있다. 사이런 여섯 명 중 한 명을 심문해서 행렬을 암호화하는 방법을 알아냈다. 이때 쓰는 행렬은 2×22 \times 2 행렬 CC이다. CC의 각 원소는 절댓값이 1 이하인 정수이고, C22C_{22}는 0이 아니다. 행렬 BB를 암호화하면 BB와 크기가 같은 행렬 AA가 나오며, 그 식은 다음과 같다. Aij=Bi−1,j−1⋅C11+Bi−1,j⋅C12+Bi,j−1⋅C21+Bij⋅C22A_{ij} = B_{i-1,j-1} \cdot C_{11} + B_{i-1,j} \cdot C_{12} + B_{i,j-1} \cdot C_{21} + B_{ij} \cdot C_{22} 인덱스가 행렬 범위를 벗어나면 그 원소의 값은 0으로 본다. 아다마 제독은 사이런 메시지를 해독해 달라고 요청한다. 인류의 생존이 여기에 달려 있다.

입력

첫 줄에 정수 nn과 mm (1≤n,m≤201 \le n,m \le 20)이 주어진다. 이어서 nn개의 줄에 각각 mm개의 정수가 주어진다. 이것이 암호화된 행렬 AA이며, i+1i+1번째 줄의 jj번째 수가 AijA_{ij}이다. 마지막 줄에는 행렬 CC의 원소 C11C_{11}, C12C_{12}, C21C_{21}, C22C_{22}가 주어진다. 입력의 모든 수는 정수이고 절댓값이 1000을 넘지 않는다. 모든 i,ji, j에 대해 ∣Cij∣≤1|C_{ij}| \le 1이고, C22≠0C_{22} \neq 0이다.

출력

nn개의 줄에 각 줄마다 mm개의 수를 출력한다. 출력하는 수는 행렬 CC로 암호화된 행렬 AA를 해독한 결과이다.

예제2

  1. 예제 1

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

    입력
    1 6
    -4 -12 -23 -31 -39 -65
    1 1 -1 -1
    
    예상 출력
    4 8 15 16 23 42