[Y] 새로운 요세푸스 문제

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

요약
각 단계에서 K가 1 이상 M 이하일 때, N명의 탈락 순서가 주어지면 K가 최소 몇 번 바뀌어야 하는지 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 그리디, 이분 탐색
정답자
아직 제출이 없습니다

문제

평화로운 삶을 살던 하이히는 어느 날 갑자기 바이비의 새로운 요세푸스 게임에 참가하게 되었다! 새로운 요세푸스 게임은 다음과 같이 진행된다.

  1. 게임이 시작하기 전, 양의 정수 MM이 정해진다.

  2. 11번 참가자부터 NN번 참가자까지 시계 방향으로 차례로 원을 그리며 앉는다.

  3. 시작할 때는 화살표를 NN번 참가자를 가리키도록 놓는다.

  4. 이후 모든 사람이 탈락할 때까지 다음 과정을 반복한다.

    • 11 이상 MM 이하의 정수 KK가 정해진다. 이 수는 이전과 같을 수도, 다를 수도 있다.
    • 화살표를 시계 방향으로 KK번 돌린다. 이때, 탈락한 참가자의 자리는 건너뛴다.
    • 이후 화살표가 가리키는 참가자가 탈락한다. 이로 인해 화살표가 돌아가지는 않는다.

예로, 다음은 N=7N = 7, M=10M = 10일 때 가능한 새로운 요세푸스 게임의 진행 과정이다.

원래라면 어디에 있어야 탈락하지 않고 끝까지 남을 수 있을지 궁금해하는 것이 일반적이지만, 호기심에 가득 찬 하이히는 사람들이 탈락한 순서가 주어질 때 KK가 최소 몇 번 달라졌는지 구해보기로 했다!

입력

첫째 줄에는 참가자의 수 NN과 정해지는 수의 최댓값 MM이 공백으로 구분되어 주어진다. (1≤N≤200,000;(1\le N\le 200\\, 000; 1≤M≤109)1\le M\le 10^9)

둘째 줄에는 참가자들의 번호 A_1,A_2,…,A_NA\_1,A\_2,\ldots ,A\_N이 탈락한 순서대로 공백으로 구분되어 주어진다. (1≤A_i≤N;(1\le A\_i\le N; A_i≠A_j iff i≠j)A\_i\neq A\_j\text{ iff } i\neq j)

실제로 참가자가 해당 순서대로 탈락할 수 있는 입력만이 주어진다.

출력

첫째 줄에 게임이 진행되면서 KK가 최소 몇 번 달라졌는지 출력한다. KK를 처음 정하는 것은 KK가 달라지는 것으로 세지 않는다.

예제2

  1. 예제 1

    입력
    7 10
    6 5 3 4 2 7 1
    
    예상 출력
    1
    
  2. 예제 2

    입력
    7 3
    3 6 2 7 5 1 4
    
    예상 출력
    0