#ABC219C. 新字典序

新字典序

新字典序

题目描述

统治 AtCoder 王国的高桥君决定改变英文小写字母的字母顺序。

新的字母顺序由一个字符串 XX 表示,XX 是 a、b、\ldots、z 的一个排列。XX 的第 ii 个字符(1i261 \le i \le 26)是新顺序下第 ii 小的英文小写字母。

王国中有 NN 个公民,他们的名字是 S1,S2,,SNS_1, S_2, \dots, S_N,每个 SiS_i1iN1 \le i \le N)由小写英文字母组成。

按照高桥君决定的字母顺序,将这些名字按字典序排序。

什么是字典序?简单来说,字典序就是单词在词典中列出的顺序。更正式的定义如下。下面给出判断两个不同字符串 SSTT 之间字典序大小的算法。

下面用 SiS_i 表示 SS 的第 ii 个字符。另外,若 SS 在字典序上小于 TT,记为 S<TS \lt T;若 SS 在字典序上大于 TT,记为 S>TS \gt T

LLSSTT 长度中较小的一个。对于每个 i=1,2,,Li=1,2,\dots,L,检查 SiS_iTiT_i 是否相同。

如果存在 ii 使得 SiTiS_i \neq T_i,设 jj 为最小的这样的 ii。然后比较 SjS_jTjT_j。若 SjS_j 在字母顺序上先于 TjT_j,则判定 S<TS \lt T 并结束;若 SjS_j 后于 TjT_j,则判定 S>TS \gt T 并结束。

如果不存在 ii 使得 SiTiS_i \neq T_i,则比较 SSTT 的长度。若 SSTT 短,则判定 S<TS \lt T 并结束;若 SSTT 长,则判定 S>TS \gt T 并结束。

输入格式

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

XX
NN
S1S_1
S2S_2
\vdots
SNS_N

输出格式

输出 NN 行。第 ii 行(1iN1 \le i \le N)应输出按高桥君决定的字母顺序排序后第 ii 小的名字。

样例

bacdefghijklmnopqrstuvwxzy
4
abx
bzz
bzy
caa
bzz
bzy
abx
caa

在高桥君设定的新字母顺序中,b 小于 a,z 小于 y。因此,按字典序对这些公民的名字排序,从小到大依次为 bzz、bzy、abx、caa。

zyxwvutsrqponmlkjihgfedcba
5
a
ab
abc
ac
b
b
a
ac
ab
abc

数据范围

  • XX 是 a、b、\ldots、z 的一个排列
  • 2N500002 \le N \le 50000
  • NN 是整数
  • 1Si101 \le |S_i| \le 101iN1 \le i \le N
  • SiS_i 由小写英文字母组成(1iN1 \le i \le N
  • SiSjS_i \neq S_j1i<jN1 \le i \lt j \le N
难度 普及
通过率
尝试 0
已通过 0
ID
2250
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签