아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

행렬

면접 대비

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

요약
0부터 9까지 행 덧셈 횟수와 열 뺄셈 횟수를 정해 행렬 A를 B로 바꾸고 행 숫자를 가장 작게 만듭니다.
난이도

보통10점 중 5점

유형
행렬, 수학, 그리디
정답자
아직 제출이 없습니다

문제

m×nm \times n 행렬 AA와 BB가 주어진다. 행렬 BB는 행렬 AA에 행 덧셈 연산과 열 뺄셈 연산을 적용해서 얻은 것이다. 행 덧셈 연산은 한 행의 모든 원소에 1을 더하고, 열 뺄셈 연산은 한 열의 모든 원소에서 1을 뺀다.

AA의 1번 행부터 mm번 행에 각각 적용할 행 덧셈 연산 횟수 r1,…,rmr_1, \dots, r_m을 구하라. 이때 다음 조건을 모두 만족해야 한다.

  • AA의 1번 열부터 nn번 열에 각각 적용할 열 뺄셈 연산 횟수 c1,…,cnc_1, \dots, c_n이 존재해서, 이 행 연산과 열 연산이 AA를 BB로 바꾼다.
  • 모든 연산 횟수는 0 이상 9 이하다. 즉 i=1,…,mi = 1, \dots, m에 대해 0≤ri≤90 \le r_i \le 9이고, j=1,…,nj = 1, \dots, n에 대해 0≤cj≤90 \le c_j \le 9이다.
  • r1…rmr_1 \dots r_m을 하나의 정수로 봤을 때 그 값이 가장 작다.

답은 r1r_1부터 rmr_m까지 순서대로 이어 붙인 값이다. 주어진 제한 안에서 AA를 BB로 바꿀 수 없으면 답은 −1-1이다.

입력

첫째 줄에 정수 mm과 nn이 공백을 사이에 두고 주어진다. (1≤m≤1001 \le m \le 100, 1≤n≤1001 \le n \le 100)

다음 mm개 줄에 행렬 AA가 1번 행부터 mm번 행까지 주어진다. 각 줄에는 정수 nn개가 공백을 사이에 두고 주어진다. 그다음 mm개 줄에 행렬 BB가 같은 형식으로 주어진다.

두 행렬의 모든 원소는 −1000-1000 이상 10001000 이하의 정수다.

출력

한 줄을 출력한다.

변환이 가능하면 r1r_1부터 rmr_m까지를 순서대로 이어 붙인 길이 mm의 숫자열을 출력한다. 앞자리 0도 그대로 남긴다. 불가능하면 −1-1을 출력한다.

예제3

  1. 예제 1

    입력
    2 3
    1 2 3
    4 5 6
    1 0 0
    0 -1 -1
    
    예상 출력
    40
    
  2. 예제 2

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

    입력
    2 1
    0
    -9
    9
    9
    
    예상 출력
    -1