쉬운 조립
면접 대비시간 제한3초메모리 제한1024 MB
서로 다른 정수가 적힌 블록들로 이루어진 탑들을 위에서 아래로 오름차순인 하나의 탑으로 만들 때 필요한 분할과 결합 연산 횟수의 최솟값을 구합니다.
문제
엠마는 블록 쌓기 놀이를 좋아한다. 엠마에게는 같은 크기의 정육면체 블록이 여러 개 있고, 각 블록에는 서로 다른 정수가 적혀 있다. 엠마는 블록을 수직으로 쌓아 탑을 만든다.
구성은 블록으로 만든 탑들의 집합이다. 엠마는 구성에 대해 다음 두 가지 연산을 할 수 있다.
- 분할: 블록이 두 개 이상인 탑에서 위쪽 블록을 원하는 개수만큼 떼어 새 탑으로 옮긴다. 이때 블록의 순서는 그대로 유지되며, 원래 탑의 맨 위 블록이 새 탑의 맨 위 블록이 된다. 탑의 개수는 1 늘어난다.
- 결합: 탑 두 개를 골라 한 탑의 블록을 순서를 유지한 채 다른 탑 위에 올린다. 탑의 개수는 1 줄어든다.
엠마는 모든 블록을 번호순으로 정렬된 하나의 탑으로 쌓으려고 한다. 가장 작은 번호가 맨 위에, 가장 큰 번호가 맨 아래에 와야 한다. 엠마는 분할과 결합 연산을 가능한 한 적게 쓰려고 한다.
입력
첫 줄에 초기 구성의 탑 개수 ()이 주어진다. 다음 개의 줄은 탑을 나타낸다. 번째 탑은 블록 개수 (, )로 시작하는 줄이며, 이어서 위에서 아래 순서로 개의 정수 ()가 주어진다. 입력에 주어지는 모든 블록 번호는 서로 다르다.
출력
한 줄에 정수 두 개 와 를 출력한다. 는 블록을 번호순으로 정렬된 하나의 탑으로 만드는 데 필요한 분할 횟수이고, 는 결합 횟수이다. 전체 연산 횟수는 최소여야 한다.
힌트
예제에는 다음 연산이 필요하다(분할 1회, 결합 2회).



