CF220C Little Elephant and Shifts
题目描述
小象有两个长度为 $n$ 的排列 $a$ 和 $b$,它们均由 $1$ 到 $n$ 的所有整数组成。我们用 $a_i$ 表示排列 $a$ 的第 $i$ 个元素($1 \leq i \leq n$),用 $b_j$ 表示排列 $b$ 的第 $j$ 个元素($1 \leq j \leq n$)。
排列 $a$ 和 $b$ 之间的距离定义为,在所有数中,$a$ 和 $b$ 出现相同数的两个位置的下标之差的绝对值的最小值。更正式地说,也就是所有满足 $a_i = b_j$ 的 $|i - j|$ 的最小值。
对于排列 $b$ 的循环平移,第 $i$ 次循环平移($1 \leq i \leq n$)定义为:排列 $b$ 经第 $i$ 次平移后为 $b_i, b_{i+1}, \ldots, b_n, b_1, b_2, \ldots, b_{i-1}$。共有 $n$ 种循环平移方式。
小象想知道,对于排列 $b$ 的所有循环平移,循环平移后的 $b$ 和排列 $a$ 之间的距离是多少?
输入格式
第一行包含一个整数 $n$ $(1 \leq n \leq 10^5)$,表示排列的大小。第二行包含排列 $a$,共 $n$ 个由 $1$ 到 $n$ 的不同数字组成的整数,数字之间用一个空格隔开。第三行包含排列 $b$,格式同上。
输出格式
输出 $n$ 行,每行一个整数,分别表示每一种循环平移后的 $b$ 与排列 $a$ 的距离。输出顺序按照排列 $b$ 的循环平移顺序:先输出第 $1$ 种循环平移,再输出第 $2$ 种,依此类推。
说明/提示
由 ChatGPT 5 翻译