CF213E Two Permutations

题目描述

Rubik 非常喜欢数字排列。 长度为 $n$ 的排列 $a$ 是一个由 $1$ 到 $n$ 的 $n$ 个不同数字组成的序列。该排列中第 $i$ 个元素($1 \leq i \leq n$)记作 $a_{i}$。 Furik 决定给 Rubik 一个礼物,并想出了一个关于排列的新问题。Furik 给 Rubik 两个排列:长度为 $n$ 的排列 $a$ 和长度为 $m$ 的排列 $b$。Rubik 需要回答这样一个问题:有多少个不同的整数 $d$,使得长度为 $n$ 的序列 $c$($c_{1}=a_{1}+d,\,c_{2}=a_{2}+d,\,...,\,c_{n}=a_{n}+d$)是 $b$ 的一个子序列。 如果存在一组下标 $i_{1},i_{2},...,i_{n}$($1 \leq i_{1} < i_{2} < ... < i_{n} \leq m$),使得 $a_{1} = b_{i_1}$,$a_{2} = b_{i_2}$,...,$a_{n} = b_{i_n}$,则称序列 $a$ 是序列 $b$ 的一个子序列,其中 $n$ 是 $a$ 的长度,$m$ 是 $b$ 的长度。 现已给出排列 $a$ 和 $b$,请帮助 Rubik 解答该问题。

输入格式

第一行包含两个整数 $n$ 和 $m$($1 \leq n \leq m \leq 200000$),表示所给排列的长度。 第二行包含 $n$ 个不同的整数,表示排列 $a$。 第三行包含 $m$ 个不同的整数,表示排列 $b$。 同一行的数字之间用空格分隔。

输出格式

输出一行,表示问题的答案。

说明/提示

由 ChatGPT 5 翻译