QOJ.ac

QOJ

Time Limit: 15 s Memory Limit: 2048 MB
统计

题目描述

给序列 $a_1,\dots,a_n$ 和排列 $b_1,\dots,b_n$,共有 $m$ 次操作:

修改操作:给定 $x,y$,将 $a_x$ 改为 $y$;

查询操作:给定 $l,r,x$,查区间 $[l,r]$ 内最长的子区间 $[l',r']$(即满足 $l\le l'\le r'\le r$),使得对 $l'\le i < r$ 有 $a_{i+1}=b_{a_i}$,且存在 $l'\le i\le r'$ 使得 $a_i=x$。只需输出 $r'-l'+1$ 的最大值,若不存在则输出 $0$。

输入格式

第一行两个整数 $n,m$;

第二行 $n$ 个整数依次表示 $a_1,\dots,a_n$;

第三行 $n$ 个整数依次表示 $b_1,\dots,b_n$;

接下来 $m$ 行,每行 $1,x,y$ 或 $2,l,r,x$ 表示进行一次修改操作或查询操作。

$1\le n,m\le 10^6$;

$1\le a_i\le n$;

$1\le b_i\le n$,$b_i$ 互不相同;

对修改操作,满足 $1\le x,y\le n$;

对查询操作,满足 $1\le l\le r\le n$,$1\le x\le n$;

输入的所有数值为整数。

输出格式

对每个查询操作,输出一行,表示相应的答案。

样例数据

样例输入

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