만드는 중입니다

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

Word Squared

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

요약
1부터 n까지의 순열이 주어질 때, 각 행과 각 열에 그 순열이 연속한 부분으로 나타나는 가장 작은 정사각 행렬을 만든다.
난이도

보통10점 중 7점

유형
조합론, 구현, 완전 탐색, 수학
정답자
아직 제출이 없습니다

문제

1부터 n까지의 수를 나열한 순열이 주어진다. 다음 조건을 만족하는 정사각 행렬을 구하라.

  1. 행렬에는 주어진 순열에 등장하는 수만 들어가야 한다.
  2. 주어진 순열이 행렬의 모든 행에 왼쪽에서 오른쪽으로 읽을 때 연속된 부분 수열로 나타나야 한다.
  3. 주어진 순열이 행렬의 모든 열에 위에서 아래로 읽을 때 연속된 부분 수열로 나타나야 한다.
  4. 행렬의 크기는 가능한 한 작아야 한다.

입력

첫째 줄에 양의 정수 n이 주어진다. (n ≤ 500)

둘째 줄에 순열을 이루는 n개의 정수가 공백으로 구분되어 주어진다.

출력

첫째 줄에 행렬의 크기 m을 출력한다. 다음 m개 줄에 행렬의 m개 행을 차례로 출력한다. 각 줄에는 해당 행의 값 m개를 공백으로 구분하여 출력한다.

크기 m은 가능한 한 작아야 한다. 조건을 만족하는 답이 여러 개라면 그중 아무거나 출력한다.

힌트

다음은 예제의 행렬에서 순열이 나타나는 위치를 표시한 것이다.

예제1

  1. 예제 1

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