#ABC314C. 旋转同色子序列

旋转同色子序列

旋转同色子序列

题目描述

给定一个由小写英文字母组成、长度为 NN 的字符串 SS。 SS 的每个字符都被染成 MM 种颜色之一:颜色 11、颜色 22、……、颜色 MM;对于每个 i=1,2,…,Ni = 1, 2, \ldots, N,SS 的第 ii 个字符被染成颜色 CiC_i。

对于每个 i=1,2,…,Mi = 1, 2, \ldots, M,按此顺序执行以下操作:

对 SS 中被染成颜色 ii 的部分执行一次循环右移 11 位。 也就是说,如果从左到右第 p1p_1、p2p_2、p3p_3、…\ldots、pkp_k 个字符被染成颜色 ii,则同时将 SS 的第 p1p_1、p2p_2、p3p_3、…\ldots、pkp_k 个字符分别替换为 SS 的第 pkp_k、p1p_1、p2p_2、…\ldots、pk−1p_{k-1} 个字符。

输出执行完上述所有操作后的最终 SS。

数据范围保证 SS 的每种颜色都至少有一个字符。

输入格式

输入按以下格式从标准输入给出:

NN MM
SS
C1C_1 C2C_2 …\ldots CNC_N

输出格式

输出答案。

样例

8 3
apzbqrcs
1 2 3 1 2 2 1 2
cszapqbr

初始时 S=S = apzbqrcs。

对 i=1i = 1,将 SS 中由第 11、44、77 个字符组成的部分循环右移 11 位,得到 S=S = cpzaqrbs。

对 i=2i = 2,将 SS 中由第 22、55、66、88 个字符组成的部分循环右移 11 位,得到 S=S = cszapqbr。

对 i=3i = 3,将 SS 中由第 33 个字符组成的部分循环右移 11 位,得到 S=S = cszapqbr(此时 SS 不变)。

因此,应输出最终的 SS:cszapqbr。

2 1
aa
1 1
aa

数据范围

  • 1≤M≤N≤2×1051 \le M \le N \le 2 \times 10^5
  • 1≤Ci≤M1 \le C_i \le M
  • NN、MM、CiC_i 均为整数。
  • SS 是长度为 NN、由小写英文字母组成的字符串。
  • 对于每个整数 1≤i≤M1 \le i \le M,存在整数 1≤j≤N1 \le j \le N 使得 Cj=iC_j = i。
难度 普及
通过率 —
尝试 0
通过 0
ID
3031
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签