맥스플러스 대수는 실수 위에서 이항 연산 두 개만 쓰는 대수 체계다. 하나는 최댓값 연산 ⊕이고 다른 하나는 덧셈 연산 ⊗이며, ⊗가 ⊕보다 우선순위가 높다.
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를 찾는 프로그램을 작성하시오. 그런 행렬이 없으면 없다는 사실을 출력한다.