만드는 중입니다

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

쉬운 조립

면접 대비

시간 제한3초메모리 제한1024 MB

요약
서로 다른 정수가 적힌 블록들로 이루어진 탑들을 위에서 아래로 오름차순인 하나의 탑으로 만들 때 필요한 분할과 결합 연산 횟수의 최솟값을 구합니다.
난이도

보통10점 중 5점

유형
해시맵, 구현, 그리디
정답자
아직 제출이 없습니다

문제

엠마는 블록 쌓기 놀이를 좋아한다. 엠마에게는 같은 크기의 정육면체 블록이 여러 개 있고, 각 블록에는 서로 다른 정수가 적혀 있다. 엠마는 블록을 수직으로 쌓아 탑을 만든다.

구성은 블록으로 만든 탑들의 집합이다. 엠마는 구성에 대해 다음 두 가지 연산을 할 수 있다.

  • 분할: 블록이 두 개 이상인 탑에서 위쪽 블록을 원하는 개수만큼 떼어 새 탑으로 옮긴다. 이때 블록의 순서는 그대로 유지되며, 원래 탑의 맨 위 블록이 새 탑의 맨 위 블록이 된다. 탑의 개수는 1 늘어난다.
  • 결합: 탑 두 개를 골라 한 탑의 블록을 순서를 유지한 채 다른 탑 위에 올린다. 탑의 개수는 1 줄어든다.

엠마는 모든 블록을 번호순으로 정렬된 하나의 탑으로 쌓으려고 한다. 가장 작은 번호가 맨 위에, 가장 큰 번호가 맨 아래에 와야 한다. 엠마는 분할과 결합 연산을 가능한 한 적게 쓰려고 한다.

입력

첫 줄에 초기 구성의 탑 개수 nn (1≤n≤100001 \le n \le 10000)이 주어진다. 다음 nn개의 줄은 탑을 나타낸다. ii번째 탑은 블록 개수 kik_i (ki≥1k_i \ge 1, ∑i=1nki≤10000\sum_{i=1}^{n} k_i \le 10000)로 시작하는 줄이며, 이어서 위에서 아래 순서로 kik_i개의 정수 bi,jb_{i,j} (1≤bi,j≤1091 \le b_{i,j} \le 10^9)가 주어진다. 입력에 주어지는 모든 블록 번호는 서로 다르다.

출력

한 줄에 정수 두 개 ss와 cc를 출력한다. ss는 블록을 번호순으로 정렬된 하나의 탑으로 만드는 데 필요한 분할 횟수이고, cc는 결합 횟수이다. 전체 연산 횟수는 최소여야 한다.

힌트

예제에는 다음 연산이 필요하다(분할 1회, 결합 2회).

초기마지막 블록 분할두 번째를 첫 번째에 결합첫 번째를 두 번째에 결합

예제1

  1. 예제 1

    입력
    2
    3 3 5 8
    2 9 2
    
    예상 출력
    1 2