이진트리 그리기

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

요약
전위 순회와 중위 순회로 복원한 이진 트리를 오른쪽 또는 아래쪽으로만 배치하는 규칙에 따라 그릴 때 필요한 최소 격자 면적을 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 트리, 재귀
정답자
아직 제출이 없습니다

문제

이진트리를 2차원 격자 위에 그리려고 한다. 각 정점은 격자점에 놓이고, 전체 그림의 루트는 사용한 격자의 맨 위쪽 행과 맨 왼쪽 열이 만나는 모서리에 놓인다.

그림은 다음 조건을 만족해야 한다.

  1. 각 정점의 자식은 부모의 오른쪽 같은 행에 놓이거나, 부모의 아래쪽 같은 열에 놓인다.
  2. 자식이 두 개라면 한 자식은 오른쪽 방향, 다른 자식은 아래쪽 방향에 놓인다. 자식이 하나라면 두 방향 중 하나를 선택할 수 있다.
  3. 어떤 정점의 두 자식이 각각 루트가 되는 두 서브트리를 감싸는 축에 평행한 직사각형은 서로 겹치면 안 된다.

그림의 면적은 그 그림을 모두 포함하는 격자의 가로 크기와 세로 크기를 곱한 값이다. 이진트리가 주어졌을 때, 위 조건을 만족하는 모든 그림 중 가능한 최소 면적을 구하시오.

입력

첫째 줄에 정점 수 n이 주어진다. (1 <= n <= 100)

둘째 줄에 n개의 정수가 공백으로 구분되어 주어진다. 전위 순회 결과가 1, 2, ..., n인 이진트리의 중위 순회 결과를 나타낸다. 입력은 항상 이 조건을 만족하는 올바른 이진트리이다.

출력

조건을 만족하는 그림의 최소 면적을 출력한다.

예제1

  1. 예제 1

    입력
    9
    4 3 5 2 6 1 8 7 9
    
    예상 출력
    12