만드는 중입니다

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

노릭과 게임

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

요약
색이 바뀌는 큐브 배열에서 질의 구간 안의 길이 k인 부분 구간 중 서로 다른 색이 가장 많은 개수를 구합니다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 슬라이딩 윈도우, 해시맵
정답자
아직 제출이 없습니다

문제

노릭이 Дим Димыч의 휴대폰에서 재미있는 게임을 찾았다. 제작자들은 이 게임이 반응 속도와 집중력을 기르도록 만들었다. 하지만 Дим Димыч에게는 너무 어렵다.

게임은 다음과 같이 진행된다. 화면에는 색이 있는 큐브 nn개가 한 줄로 놓여 있다. 어떤 시점에는 일부 큐브의 색이 바뀐다. 또 게임은 가끔 질문을 던진다. 구간 [l…r][l \dots r](1≤l≤r≤n1 \le l \le r \le n)이 주어지면, 플레이어는 [l…r][l \dots r]에 포함된 길이 kk인 구간 중에서 서로 다른 색의 최대 개수를 답해야 한다. kk는 게임 시작 시 정해지며 게임 내내 바뀌지 않는다. 목표는 모든 질문에 정확히 답하는 것이다.

당신은 이 게임의 프로그래머가 되어 모든 질문의 정답을 계산한다.

입력

첫 줄에 정수 nn, mm, kk(1≤n≤1051 \le n \le 10^5, 1≤m≤1051 \le m \le 10^5, 1≤k≤n1 \le k \le n)가 주어진다. 각각 큐브의 개수, 이벤트의 개수, 구간의 길이이다. 둘째 줄에는 처음 시점의 큐브 색 aia_i(1≤ai≤1061 \le a_i \le 10^6)가 nn개 주어진다.

이어지는 mm개의 줄에 이벤트가 한 줄에 하나씩 주어진다.

  • 1 i x: ii번째 큐브의 색을 xx(1≤i≤n1 \le i \le n, 1≤x≤1061 \le x \le 10^6)로 바꾼다.
  • 2 l r: 구간 [l…r][l \dots r]에 대해 질문에 답한다. 이때 r−l+1≥kr - l + 1 \ge k이다.

출력

종류 2의 이벤트마다 답을 질문이 주어진 순서대로 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

    입력
    5 3 3
    1 2 1 3 3
    2 1 3
    1 3 3
    2 1 5
    
    예상 출력
    2
    3
    
  2. 예제 2

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