만드는 중입니다

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

맥스플러스

시간 제한1초메모리 제한128 MB

요약
3x3 정수 행렬 A와 C가 주어질 때, 맥스플러스 곱 A⊗B=C를 만족하는 정수 행렬 B 중 모든 성분이 가장 큰 행렬을 구하거나 존재하지 않으면 nemoguce를 출력한다.
난이도

어려움10점 중 8점

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

문제

맥스플러스 대수는 실수 위에서 이항 연산 두 개만 쓰는 대수 체계다. 하나는 최댓값 연산 ⊕\oplus이고 다른 하나는 덧셈 연산 ⊗\otimes이며, ⊗\otimes가 ⊕\oplus보다 우선순위가 높다.

x⊕y=max⁡(x,y),x⊗y=x+yx \oplus y = \max(x, y), \qquad x \otimes y = x + y

예를 들어 3⊕5=53 \oplus 5 = 5, 7⊕4=77 \oplus 4 = 7, 3⊗5=83 \otimes 5 = 8, 7⊗4=117 \otimes 4 = 11이다.

이 대수를 응용할 때는 두 행렬의 맥스플러스 곱 A⊗B=CA \otimes B = C를 많이 쓴다. 곱은 보통의 행렬 곱과 같은 꼴로 정의하되, 곱셈 기호를 ⊗\otimes(덧셈)로 바꾸고 덧셈 기호를 ⊕\oplus(최댓값)로 바꾼다.

이 문제에서는 정수로 이루어진 3×33 \times 3 행렬의 맥스플러스 곱만 다룬다.

[a1,1a1,2a1,3a2,1a2,2a2,3a3,1a3,2a3,3]⊗[b1,1b1,2b1,3b2,1b2,2b2,3b3,1b3,2b3,3]=[c1,1c1,2c1,3c2,1c2,2c2,3c3,1c3,2c3,3]\begin{bmatrix} a_{1,1} & a_{1,2} & a_{1,3} \\ a_{2,1} & a_{2,2} & a_{2,3} \\ a_{3,1} & a_{3,2} & a_{3,3} \end{bmatrix} \otimes \begin{bmatrix} b_{1,1} & b_{1,2} & b_{1,3} \\ b_{2,1} & b_{2,2} & b_{2,3} \\ b_{3,1} & b_{3,2} & b_{3,3} \end{bmatrix} = \begin{bmatrix} c_{1,1} & c_{1,2} & c_{1,3} \\ c_{2,1} & c_{2,2} & c_{2,3} \\ c_{3,1} & c_{3,2} & c_{3,3} \end{bmatrix}

여기서 ci,j=ai,1⊗b1,j⊕ai,2⊗b2,j⊕ai,3⊗b3,jc_{i,j} = a_{i,1} \otimes b_{1,j} \oplus a_{i,2} \otimes b_{2,j} \oplus a_{i,3} \otimes b_{3,j}이다. 즉 ci,jc_{i,j}는 대응하는 성분들의 합 세 개 중 가장 큰 값이다.

예를 들어 다음이 성립한다.

[0123−10111]⊗[201−132010]=[243534343]\begin{bmatrix} 0 & 1 & 2 \\ 3 & -1 & 0 \\ 1 & 1 & 1 \end{bmatrix} \otimes \begin{bmatrix} 2 & 0 & 1 \\ -1 & 3 & 2 \\ 0 & 1 & 0 \end{bmatrix} = \begin{bmatrix} 2 & 4 & 3 \\ 5 & 3 & 4 \\ 3 & 4 & 3 \end{bmatrix}

행렬 AA와 CC가 주어진다. 두 행렬의 성분은 모두 절댓값이 100보다 작은 정수다. A⊗B=CA \otimes B = C를 만족하고 성분이 모두 절댓값이 1000보다 작은 정수인 행렬 BB를 찾는 프로그램을 작성하시오. 그런 행렬이 없으면 없다는 사실을 출력한다.

입력

첫 세 줄에 행렬 AA의 성분이 한 줄에 세 개씩 주어진다.

다음 세 줄에 행렬 CC의 성분이 한 줄에 세 개씩 주어진다.

모든 수는 절댓값이 100보다 작은 정수다.

출력

A⊗B=CA \otimes B = C를 만족하는 행렬 BB가 없으면 첫 줄에 nemoguce만 출력한다.

있으면 세 줄에 걸쳐 행렬 BB의 성분을 한 줄에 세 개씩 공백 하나로 구분해 출력한다.

조건을 만족하는 BB는 여러 개일 수 있다. 그중에서 모든 자리의 성분이 다른 어떤 답의 같은 자리 성분보다 크거나 같은 행렬을 출력한다. 답이 하나라도 있으면 그런 행렬은 항상 존재하고 유일하다. 그 행렬의 성분은 모두 절댓값이 1000보다 작다.

예제3

  1. 예제 1

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

    입력
    0 0 0
    0 0 0
    0 0 0
    99 99 99
    99 99 99
    99 99 99
    
    예상 출력
    99 99 99
    99 99 99
    99 99 99
    
  3. 예제 3

    입력
    1 1 1
    1 1 1
    1 1 1
    2 2 2
    2 3 2
    2 2 2
    
    예상 출력
    nemoguce