riteme.site

$k$-SBK变换 (ksbk.in/out/cpp)

时间限制: 1 s / 内存限制: 512 MB / 打开O2优化

题目描述

数学家Lunk最近发现了一种逗逼的SBK变换。在Lunk眼里,SBK变换是这样的:

给你一个$1$$n$的排列$A$和一个$1$$n$的排列$P$$P$$A$做一次SBK变换后将得到一个新的排列$B$,其中:
$$ B_{P_i} = A_i \tag{SBK Transformation}$$

然而做一次SBK变换太过无聊,于是Lunk决定连续做多次SBK变换。即将每次变换后的结果$B$变为$A$,然后继续用$P$$A$做SBK变换。Lunk想知道连续对$A$$k$次SBK变换后的结果。

输入格式

第一行输入两个整数$n$$k$,表示排列的长度和连续做SBK变换的次数。
第二行输入$n$个整数表示排列$A$
第三行输入$n$个整数表示排列$P$

输出格式

一行输出$n$个整数,表示$k$次SBK变换后的结果。

样例输入

1
2
3
5 2
1 2 3 4 5
2 3 4 5 1

样例输出

1
4 5 1 2 3

样例解释

做完第一次SBK变换后: 5 1 2 3 4
做完第二次SBK变换后: 4 5 1 2 3

数据范围及约定

$10$个测试点,每个测试点的数据范围如下表所示:

数据点 $n$的规模 $k$的规模
1 $\le10^3$ $\le10^3$
2 $\le10^3$ $\le10^3$
3 $\le10^4$ $\le10^5$
4 $\le10^4$ $\le2\times10^5$
5 $\le4\times10^5$ $\le2^{30}$
6 $\le4\times10^5$ $\le2^{33}$
7 $\le6\times10^5$ $\le2^{63}$
8 $\le6\times10^5$ $\le2^{63}$
9 $\le10^6$ $\le2^{63}$
10 $\le2.3\times10^6$ $\le2^{63}$