컬렉션 둘러보기
시간 제한4초메모리 제한512 MB
원형으로 놓인 n개 아이템의 모든 쌍마다, 포인터를 한쪽에서 다른 쪽으로 옮기는 데 필요한 최소 연산 횟수를 구합니다.
문제
온라인 컬렉션에 항목 개가 원형으로 놓여 있고, 항목에는 1번부터 번까지 번호가 붙어 있다. 항목 의 오른쪽 항목은 이고, 항목 의 오른쪽 항목은 1이다. 마찬가지로 항목 의 왼쪽 항목은 이고, 항목 1의 왼쪽 항목은 이다.
항목에는 1번부터 번까지 번호가 붙은 개의 매개변수가 있다. 항목 의 번째 매개변수 값은 정수 이다.
둘러보는 동안 포인터는 항상 어떤 항목을 가리키며, 이 항목을 현재 항목이라고 한다. 또한 필터 조건의 집합을 관리할 수 있다. 각 조건은 의 쌍이며, 항목의 번째 매개변수 값이 와 같아야 한다는 뜻이다. 현재 항목은 집합의 모든 조건을 항상 만족한다.
컬렉션을 둘러보려면 연산을 수행한다. 연산은 다음 네 가지 중 하나여야 한다.
- 오른쪽 클릭. 포인터는 현재 항목의 오른쪽에 있으면서 모든 필터 조건을 만족하는 가장 가까운 항목으로 이동한다. 현재 항목이 그런 항목 중 유일하면 포인터는 움직이지 않는다.
- 왼쪽 클릭. 포인터는 현재 항목의 왼쪽에 있으면서 모든 필터 조건을 만족하는 가장 가까운 항목으로 이동한다. 현재 항목이 그런 항목 중 유일하면 포인터는 움직이지 않는다.
- 새 필터 조건 추가. 현재 항목이 이 조건을 만족하면 포인터는 움직이지 않는다. 만족하지 않으면, 새 조건을 포함한 모든 필터 조건을 만족하는 항목 중 현재 항목의 오른쪽에서 가장 가까운 항목으로 포인터가 이동한다. 그런 항목이 없으면 이 연산은 불법이므로 수행할 수 없다.
- 필터 조건 중 하나를 제거. 포인터는 움직이지 않는다.
모든 순서쌍 에 대해 다음 질문에 답하라. 항목 에 포인터를 두고 필터 조건 집합이 비어 있는 상태에서 둘러보기를 시작할 때, 포인터를 항목 로 옮기는 데 필요한 연산의 최소 횟수는 얼마인가? 필터 조건 집합은 마지막에 어떤 상태여도 된다.
입력
첫 줄에 항목 수 과 항목당 매개변수 수 이 주어진다 (; ).
다음 개 줄의 번째 줄에는 항목 의 매개변수 값 이 주어진다 ().
출력
개 줄을 출력한다. 번째 줄의 번째 정수는 필터 조건 집합이 비어 있는 상태에서 항목 로부터 항목 로 포인터를 옮기는 데 필요한 최소 연산 횟수이다.
힌트
예제 테스트에서 항목 에서 항목 로 가는 가장 빠른 방법 중 하나는 다음과 같다.
- 필터 조건 를 추가한다. 항목 의 3번째 매개변수 값이 4이므로 포인터는 항목 에 머문다.
- 오른쪽 클릭한다. 활성 조건 를 만족하는 항목 중 항목 의 오른쪽에서 가장 가까운 항목으로 이동하며, 그 항목은 항목 이다. (왼쪽 클릭해도 된다.)
항목 에서 항목 으로 가는 가장 빠른 방법 중 하나는 다음과 같다.
- 필터 조건 를 추가한다. 항목 은 이 조건을 만족하지 않으므로, 3번째 매개변수 값이 4인 항목 중 항목 의 오른쪽에서 가장 가까운 항목인 항목 로 이동한다.
- 필터 조건 를 제거한다. 포인터는 항목 에 머문다.
- 오른쪽 클릭한다. 필터 조건이 없으므로 포인터는 항목 으로 이동한다.