시간 제한
메모리 제한
시간 제한
5초
메모리 제한
128 MB
가로와 세로의 크기가 모두 N인 숫자판이 있다. 각 칸에는 0 이상의 정수를 넣어야 한다. 각 행의 합과 각 열의 합이 미리 주어질 때, 모든 합을 만족하도록 숫자판을 채워야 한다.
예를 들어 N=2일 때 필요한 행의 합과 열의 합이 다음과 같다고 하자.
| 행 합 | ||
|---|---|---|
| ? | ? | 12 |
| ? | ? | 4 |
| 6 | 10 |
오른쪽의 수는 각 행의 합을, 아래쪽의 수는 각 열의 합을 나타낸다. 같은 합을 만족하는 숫자판은 여러 가지일 수 있다. 위 상황에서 가능한 배치 세 가지는 다음과 같다.
| 5 | 7 |
| 1 | 3 |
| 6 | 6 |
| 0 | 4 |
| 4 | 8 |
| 2 | 2 |
가능한 모든 배치 중에서, 어떤 칸에 들어간 값의 최댓값이 가장 작아지는 배치를 하나 찾아야 한다. 위 상황에서는 최댓값이 6인 배치가 최적이다. 이런 배치를 구성하는 프로그램을 작성하시오.
첫째 줄에 행과 열의 크기 N이 주어진다 (1 ≤ N ≤ 50).
둘째 줄에는 N개의 정수가 주어진다. 이 정수들은 1행부터 N행까지 필요한 행의 합을 차례대로 나타낸다.
셋째 줄에는 N개의 정수가 주어진다. 이 정수들은 1열부터 N열까지 필요한 열의 합을 차례대로 나타낸다.
각 합은 0 이상 10000 이하이다. 숫자판을 만들 수 없는 입력은 주어지지 않는다.
첫째 줄에는 만든 숫자판에 들어간 값들 중 최댓값을 출력한다.
둘째 줄부터 N개의 줄에는 숫자판의 각 행을 한 줄에 하나씩 출력한다. 출력하는 모든 값은 0 이상의 정수여야 한다. 모든 행의 합과 열의 합이 입력과 같아야 하며, 출력한 값의 최댓값은 가능한 한 작아야 한다.