#A1464. 旋转带色字符串

旋转带色字符串

题目背景

如果你前面的题都AC了,那说明你的基础很扎实!👍 👍 🚀️

题目描述

给定一个只包含小写字母的长度为 NN 的字符串 SS,以及 MM 种不同的颜色(编号依次为1、2、……、MM),为 SS 的每个字符染上其中一种颜色,第 ii 个字符的颜色记为 CiC_i

现在按照 i=1,2,,Mi=1,2,\cdots,M 的顺序,依次执行 MM 次以下操作:

  • SS 中染上颜色 ii 的部分,循环右移一个单位。即,若 SS 中被染成颜色 ii 的字符从左到右依次为 p1,p2,p3,,pkp_1,p_2,p_3,\cdots,p_k,那么把这些字符分别替换成 pk,p1,p2,,pk1p_k,p_1,p_2,\cdots,p_{k-1}

求出执行完以上所有操作后最终的 SS。数据保证字符串 SS 包含了 MM 种颜色,即对于每种颜色,SS 中都至少有一个字符被染成该色。

输入格式

三行。第一行为两个整数,分别是 NMN、M,第二行为字符串 SS,第三行为 NN 个数 C1,C2,,CNC_1,C_2,\cdots,C_N

输出格式

一个字符串,表示最终的 SS


样例1

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

样例说明1

初始时,SS = apzbqrcs

  • i=1i=1 时,把颜色为 1 的第 1、4、7 个字符循环右移一个单位,得到 SS = cpzaqrbs
  • i=2i=2 时,把颜色为 2 的第 2、5、6、8 个字符循环右移一个单位,得到 SS = cszapqbr
  • i=3i=3 时,把颜色为 3 的第 3 个字符循环右移一个单位(未发生改变),得到 SS = cszapqbr

因此输出的最终结果就是 cszapqbr


样例2

2 1
aa
1 1
aa

数据约束

  • 1MN2×1051\le M \le N \le 2\times 10^5
  • 1CiM1 \le C_i \le M
  • SS 中只有小写字母。
  • 对于每个整数 i(1iM)i(1\le i \le M),一定存在整数 j(1jN)j(1\le j \le N) 使得 Cj=iC_j=i