#R5. 信息解压缩

信息解压缩

题目描述

现有一种编码方式,规则为:在编码的过程中,开始时只有一部基础构造元素的编码词典,如果在编码的过程中遇到一个新的词条,则该词条及一个新的编码会被追加到词典中,并用于后继信息的编码。

举例说明,考虑一个待编码的信息串: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。

我们可以看到,信息被压缩了。压缩好的信息传递到接收方,接收方也只要根据基础词典就可以完成对该序列的完全恢复。解码过程是编码过程的逆操作。现在已知初始词典的条目以及收到的编码信息,求解码后的信息串。

输入格式

所有数据从password.in文件输入。 第一行为一个整数n,表示初始词典的条目数量, 第二行n个字母表示初始词典的条目, 第三行多个整数表示收到的正确的编码信息。

输出格式

所有数据输出到password.out文件。 一行字符串,表示解码后的信息串。

样例

Input 1

2 x y 1 1 2 0 2 2 0 1 1 0 5 0 4 0 1 2 1 0

Output 1

xxy yy xx xx yy xyx

数据范围

  1. 对于10%的数据,n =1
  2. 对于30%的数据,n=2
  3. 对于80%的数据,n<10
  4. 对于100%的数据,n< 26,词典条目单词长度不超过50,信息串不同单词数量不超过1000个,第三行编码信息不超过10^6个