아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

책장 정리

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

요약
순열이 주어지고, 두 위치를 바꾸는 질의가 q번 있을 때 각 시점마다 양 끝 삽입만으로 정렬하는 최소 이동 횟수를 구한다.
난이도

어려움10점 중 8점

유형
배열, 동적 계획법, 세그먼트 트리, 수학
정답자
아직 제출이 없습니다

문제

Irma는 도서관에서 일한다. 매일 그녀는 방문객들이 책장에서 책 몇 권을 꺼내 읽고, 꺼낸 자리에 그대로 다시 꽂는 모습을 본다. 보통 사람들은 순서를 어지럽혀서 읽은 두 권의 책 위치를 서로 바꾼다. nn권의 책이 어떤 순서로 꽂혀 있는 특정 책장 하나를 살펴보자. 책에는 왼쪽에서 오른쪽으로 11부터 nn까지 번호가 붙어 있다. ii번째 방문객은 x_ix\_i번 위치와 y_iy\_i번 위치의 책을 꺼내 같은 위치에 다시 꽂지만, 순서를 잘못 바꿔 놓는다. ii번째 방문객이 떠난 뒤에는 x_ix\_i번 위치에 있던 책이 y_iy\_i번 위치로, y_iy\_i번 위치에 있던 책이 x_ix\_i번 위치로 간다.

저녁에 도서관 문을 닫은 뒤 Irma는 모든 책을 제자리에 돌려놓으려 한다. 각 책에는 p_ip\_i라는 번호가 있는데, 이 책이 최종적으로 있어야 할 위치다. 책을 옮기기 위해 Irma는 책장에서 아무 책이나 꺼내 맨 앞이나 맨 뒤에 꽂을 수 있다. 그러면 그 책은 책장의 첫 번째 또는 마지막 자리에 놓인다.

Irma가 모든 책을 제자리에 돌려놓기 위해 할 수 있는 최소 이동 횟수는 얼마인가? 이 질문에 p_ip\_i로 정해지는 초기 배치와, 방문객이 두 책의 위치를 바꿀 때마다 답하시오.

입력

첫째 줄에 두 정수 nn과 qq가 주어진다. (2≤n≤2⋅1052 \le n \le 2 \cdot 10^5; 0≤q≤2⋅1050 \le q \le 2 \cdot 10^5) nn은 책장에 있는 책의 수, qq는 방문객의 수다. 다음 줄에는 nn개의 서로 다른 정수 p_ip\_i가 주어진다. (1≤p_i≤n1 \le p\_i \le n) 이는 ii번 위치에 있는 책이 최종적으로 p_ip\_i번 위치에 있어야 한다는 뜻이다.

다음 qq개 줄은 도서관 방문객을 나타낸다. 각 줄에는 두 정수 x_ix\_i, y_iy\_i가 주어진다. (1≤x_i<y_i≤n1 \le x\_i < y\_i \le n) 이는 ii번째 방문객이 x_ix\_i번 위치와 y_iy\_i번 위치의 책 두 권을 바꿔 놓았다는 뜻이다.

출력

q+1q + 1개의 정수를 출력한다. 초기 순서에서 모든 책을 정리하는 데 필요한 최소 이동 횟수, 첫 번째 방문객이 떠난 뒤의 순서에서 필요한 최소 이동 횟수, ..., qq명의 방문객이 모두 떠난 뒤의 순서에서 필요한 최소 이동 횟수를 차례로 출력한다.

힌트

책의 초기 순서는 (5,1,2,4,3)(5, 1, 2, 4, 3)이다. 이 책을 정리하려면 먼저 책 44를 맨 뒤로 옮기고, 그다음 책 55를 맨 뒤로 옮기면 된다. 첫 번째 방문객이 떠난 뒤 책장은 (5,1,2,3,4)(5, 1, 2, 3, 4)가 되고, 책 55를 맨 뒤로 옮기기만 하면 된다. 두 번째 방문객이 떠난 뒤 책의 순서는 (3,1,2,5,4)(3, 1, 2, 5, 4)이다. 이 순서에서 최소 이동 횟수는 33이며, 33번의 이동으로 최종 순서를 만드는 방법은 여러 가지다.

예제1

  1. 예제 1

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