3x3 정수 행렬 A와 C가 주어질 때, 맥스플러스 곱 A⊗B=C를 만족하는 정수 행렬 B 중 모든 성분이 가장 큰 행렬을 구하거나 존재하지 않으면 nemoguce를 출력한다.
어려움8수학행렬그리디구현아직 제출이 없습니다시간 제한1초메모리 제한128 MB맥스플러스 대수는 실수 위에서 이항 연산 두 개만 쓰는 대수 체계다. 하나는 최댓값 연산 ⊕이고 다른 하나는 덧셈 연산 ⊗이며, ⊗가 ⊕보다 우선순위가 높다.
x⊕y=max(x,y),x⊗y=x+y
예를 들어 3⊕5=5, 7⊕4=7, 3⊗5=8, 7⊗4=11이다.
이 대수를 응용할 때는 두 행렬의 맥스플러스 곱 A⊗B=C를 많이 쓴다. 곱은 보통의 행렬 곱과 같은 꼴로 정의하되, 곱셈 기호를 ⊗(덧셈)로 바꾸고 덧셈 기호를 ⊕(최댓값)로 바꾼다.
이 문제에서는 정수로 이루어진 3×3 행렬의 맥스플러스 곱만 다룬다.
a1,1a2,1a3,1a1,2a2,2a3,2a1,3a2,3a3,3⊗b1,1b2,1b3,1b1,2b2,2b3,2b1,3b2,3b3,3=c1,1c2,1c3,1c1,2c2,2c3,2c1,3c2,3c3,3
여기서 ci,j=ai,1⊗b1,j⊕ai,2⊗b2,j⊕ai,3⊗b3,j이다. 즉 ci,j는 대응하는 성분들의 합 세 개 중 가장 큰 값이다.
예를 들어 다음이 성립한다.
0311−11201⊗2−10031120=253434343
행렬 A와 C가 주어진다. 두 행렬의 성분은 모두 절댓값이 100보다 작은 정수다. A⊗B=C를 만족하고 성분이 모두 절댓값이 1000보다 작은 정수인 행렬 B를 찾는 프로그램을 작성하시오. 그런 행렬이 없으면 없다는 사실을 출력한다.
첫 세 줄에 행렬 A의 성분이 한 줄에 세 개씩 주어진다.
다음 세 줄에 행렬 C의 성분이 한 줄에 세 개씩 주어진다.
모든 수는 절댓값이 100보다 작은 정수다.
A⊗B=C를 만족하는 행렬 B가 없으면 첫 줄에 nemoguce만 출력한다.
있으면 세 줄에 걸쳐 행렬 B의 성분을 한 줄에 세 개씩 공백 하나로 구분해 출력한다.
조건을 만족하는 B는 여러 개일 수 있다. 그중에서 모든 자리의 성분이 다른 어떤 답의 같은 자리 성분보다 크거나 같은 행렬을 출력한다. 답이 하나라도 있으면 그런 행렬은 항상 존재하고 유일하다. 그 행렬의 성분은 모두 절댓값이 1000보다 작다.