小黄有一封尘封已久的信件,上面的内容是一个字符串。由于该信件实在是过去太久了,所以上面的有些字母已经模糊不清了,用 '#' 代替。小黄给每一个不清楚的字母都凭借记忆给出了 k 个不同的候选字母,将所有可能的字符串按字典序大小进行排序,第 x 小的字符串即为原本的字符串,聪明的你能帮助小黄复原字符串吗?
关于字典序的定义,如果有不懂的同学,另外一题会有解释。
第一行四个整数 N , M , K, X (1<=N<=500000,1<=M<=N,1<=k<=26,1<=X<=10^18)
第二行一个长度为 N 的字符串,仅包含小写字母和 '#' 。
接下来 M 行,每行 K 个字母 ,第 i 行表示第 i 个 '#' 可以由 k 个字母中的某一个代替。
保证 X 不超过能构造字符串的数量。
请不要使用 gets 来读取字符串,同时如果你的代码写的很搓(常数较大)的话,也不建议使用 cin ,cout 输入输出方式。
一个字符串,表示答案。
5 2 3 4 c##nb yzd hws
cyhnb