/ WHOJ / 题库 /

找循环移位序列

找循环移位序列

题目描述

文景随手写出了 \(1 \sim n\) 的一个排列 \(p=\{p[1],…,p[i],…,p[n]\}(1≤n≤2×10^5)\),缠着妈妈给他出题。

妈妈也随手写出了一个序列 \(a=\{a[1],…,a[i],…,a[m]\}(1≤a[i]≤n)\),长度为 \(m(1≤m≤2×10^5)\)。

妈妈给出了 \(q\) 次询问,每次询问给定 \(l\) 和 \(r\),询问 \([l,r]\) 区间,能否找到一个子序列等于排列 \(p\) 的某个循环移位序列。

\(p\) 的循环移位序列:

例如 \(p\) 循环左移 \(i\) 次,可以得到 \(\{p[i+1],…,p[n],p[1],…,p[i]\}\)。

格式

输入格式

第一行三个正整数 \(n,m,q(1≤n,m,q≤2×10^5)\),用空格隔开;

第二行 \(n\) 个正整数,表示文景随手写的排列 \(p\),以空格隔开;

第三行 \(m\) 个正整数,表示妈妈随手写的 \(a\) 序列,以空格隔开;

以下 \(q\) 行,每行两个正整数 \(l\) 和 \(r\),表示一个询问。

输出格式

对于所有的询问输出在一行。

对于每个询问用 \(1\) 表示可以在 \([l,r]\) 区间,找到一个子序列等于排列 \(p\) 的某个循环移位序列;用 \(0\) 表示无法找到;

每个询问的回答之间不用输出空格。

样例1

样例输入1

3 6 3
2 1 3
1 2 3 1 2 3
1 5
2 6
3 5

样例输出1

110

样例解释

\([1,5]\) 区间,可以找到 \(\{1,3,2\}\);

\([2,6]\) 区间,可以找到 \(\{2,1,3\}\);

\([3,5]\) 区间,找不到;

限制

时间:\(1s\) 空间:\(256M\)

对于 \(20\%\) 的数据:\(1≤n,m,q≤100\);

对于 \(50\%\) 的数据:\(1≤n,m,q≤500\);

对于 \(100\%\) 的数据:\(1≤n,m,q≤2×10^5\);

来源

地址:\(zloj,J2021\)域
作者:\(jialiang2509\)