만드는 중입니다

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

빅 데이터 순열

시간 제한15초메모리 제한2048 MB

요약
배열 a의 값을 바꾸는 갱신과 구간 질의가 주어집니다. 질의마다 [l, r] 안에서 a[j+1]=b[a[j]]가 이어지고 값 x를 포함하는 가장 긴 부분 구간의 길이를 구합니다.
난이도

어려움10점 중 9점

유형
세그먼트 트리, 배열, 그래프
정답자
아직 제출이 없습니다

문제

길이가 nn인 수열 a1,…,ana_1, \ldots, a_n과 순열 b1,…,bnb_1, \ldots, b_n이 주어진다. 다음 두 가지 연산을 mm번 처리한다.

  • 수정 연산: xx와 yy가 주어진다. axa_x를 yy로 바꾼다.
  • 조회 연산: ℓ\ell, rr, xx가 주어진다. 구간 [ℓ,r][\ell, r]의 부분 구간 [ℓ′,r′][\ell', r'] (단, ℓ≤ℓ′≤r′≤r\ell \le \ell' \le r' \le r) 중에서 모든 ℓ′≤j<r′\ell' \le j < r'에 대해 aj+1=baja_{j+1} = b_{a_j}이고, ℓ′≤i≤r′\ell' \le i \le r'을 만족하는 어떤 ii에 대해 ai=xa_i = x인 가장 긴 구간을 찾는다. 그 구간의 길이 r′−ℓ′+1r' - \ell' + 1만 출력한다. 그런 구간이 없으면 00을 출력한다.

입력

첫째 줄에 nn과 mm이 주어진다 (1≤n,m≤1061 \le n, m \le 10^6). 둘째 줄에는 a1,…,ana_1, \ldots, a_n이 주어진다 (1≤ai≤n1 \le a_i \le n). 셋째 줄에는 b1,…,bnb_1, \ldots, b_n이 주어진다 (1≤bi≤n1 \le b_i \le n, 모든 bib_i는 서로 다르다). 이후 mm개의 줄에 연산이 하나씩 주어진다. 수정 연산은 1 x y 형태이고, 조회 연산은 2 l r x 형태이다 (1≤x,y≤n1 \le x, y \le n, 1≤ℓ≤r≤n1 \le \ell \le r \le n). 조회 연산은 적어도 하나 주어진다.

출력

각 조회 연산마다 답을 한 줄에 출력한다.

예제1

  1. 예제 1

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