题号:NC296323
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
给定

个字符串,请你对这

个字符串按照以下规则从小到大排序。
对于任意两个字符串

和

,在排序后应当满足:
- 若

是

的一个前缀,则

在排序后的下标小于等于

的在排序后的下标。
- 若存在整数

,使得

的前

个字符和

的前

个字符相同,且

和

的第

个字符不同,则比较第

个字符的大小关系(字符的大小关系顺序由输入数据给出)。若

的第

个字符小于等于

的第

个字符,则

在排序后的下标小于等于

的在排序后的下标。
容易发现,上述排序方法的排序结果是唯一的。
输入描述:
第一行输入一个字符串,包含
个互不相同的小写字母。记
表示字母
是该字符串的第
个字符,则字母
小于等于字母
当且仅当
。
第二行输入一个整数
,表示待排序字符串的数量。
接下来
行,每行一个仅包含小写字母的字符串
,表示一个待排序的字符串。
输出描述:
按照排序后字符串位置下标从小到大的顺序输出
行,每行一个字符串,表示排序的结果。
示例1
输入
复制
abcdefghijklmnopqrstuvwxyz
3
aaa
aac
aaaa
示例2
输入
复制
zyxwvutsrqponmlkjihgfedcba
3
aaa
aac
aaaa