Description
现有一种编码方式,规则为:在编码的过程中,开始时只有一部基础构造元素的编码词典,如果在编码的过程中遇到一个新的词条,则该词条及一个新的编码会被追加到词典中,并用于后继信息的编码。
举例说明,考虑一个待编码的信息串:xyx yy yy xyx。初始词典只有3个条目,第0个默认为空格,编码为0,第一个为x,编码为1;第二个为y,编码为 2。于是串xyx的编码为1 2 1(其中用“ ”将各个字母分开),加上后面的一个空格编码“0”就是 1 2 1 0。但由于有了“0”这个空格,我们就知道前面的 xyx 是一个单词,而由于该单词没有在词典中,我们就可以自适应的把这个词条添加到词典里,编码为 3,然后按照新的词典对后继信息进行编码,以此类推。于是,最后得到编码:1 2 1 0 2 2 0 4 0 3 0。
我们可以看到,信息被压缩了。压缩好的信息传递到接收方,接收方也只要根据基础词典就可以完成对该序列的完全恢复。解码过程是编码过程的逆操作。现在已知初始词典的条目以及收到的编码信息,求解码后的信息串。
Input
第一行为一个整数n,表示初始词典的条目数量,
第二行n个字母表示初始词典的条目,
第三行多个整数表示收到的正确的编码信息。
2
x y
1 1 2 0 2 2 0 1 1 0 5 0 4 0 1 2 1 0
HINT
对于 10%的数据, n=1
对于 30%的数据, n=2
对于 80%的数据, n≤10
对于 100%的数据, n≤26,词典条目单词长度不超过 50,信息串不同单词数量不超过 1000个,第三行编码信息不超过 10
6个
样例:
sample.zip