만드는 중입니다

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

수열과 어렵지 않은 쿼리

면접 대비

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

요약
배열의 원소를 바꾸는 갱신과 구간 질의가 주어질 때, 질의 구간에서 같은 값이 연속으로 이어지는 최대 구간의 개수를 구합니다.
난이도

보통10점 중 4점

유형
배열, 누적 합
정답자
아직 제출이 없습니다

문제

수열의 연속 부분 수열 [al,al+1,⋯ ,ar][a_l, a_{l+1}, \cdots, a_r]에서 모든 원소가 서로 같을 때, 이러한 구간 [l,r][l, r]을 수열 aa의 연속 일치 구간이라고 합니다. 또한 수열 aa의 어떤 연속 일치 구간이 다른 연속 일치 구간에 완전히 포함되지 않으면, 이를 수열 aa의 중요한 연속 일치 구간이라고 합니다.

인덱스가 1부터 시작하는 수열 AA에 대해 다음 쿼리 qq개를 해결해야 합니다.

  • 1 i x: AiA_i의 값을 xx로 바꿉니다. (1≤i,x≤n1 \le i, x \le n)
  • 2 l r: BB를 수열의 연속 부분 수열 [Al,Al+1,⋯ ,Ar][A_l, A_{l+1}, \cdots, A_r]로 정의할 때, 수열 BB의 서로 다른 중요한 연속 일치 구간의 개수를 출력합니다. (1≤l≤r≤n1 \le l \le r \le n)

어렵지 않은 문제죠? 여러분도 어렵지 않게 느껴지면 좋겠습니다.

입력

첫 번째 줄에 수열의 길이 nn과 쿼리의 개수 qq가 공백으로 구분되어 주어집니다. (1≤n,q≤2×1051 \le n, q \le 2 \times 10^5)

두 번째 줄에 수열 AA의 원소 A1,A2,⋯ ,AnA_1, A_2, \cdots, A_n이 공백으로 구분되어 주어집니다. (1≤Ai≤n1 \le A_i \le n)

그다음 줄부터 qq개의 쿼리가 한 줄에 하나씩 주어집니다. 각 쿼리는 문제에서 설명한 종류 중 하나입니다.

모든 입력에서 마지막 쿼리는 2번 쿼리임이 보장됩니다.

출력

각 2번 쿼리에 대해 정답을 한 줄에 하나씩 출력합니다.

예제1

  1. 예제 1

    입력
    10 9
    1 1 1 2 2 1 1 4 4 4
    2 1 10
    2 2 6
    2 2 5
    1 2 7
    2 1 10
    2 2 6
    2 7 8
    1 7 4
    2 7 8
    
    예상 출력
    4
    3
    2
    6
    4
    2
    1