P14697 [ICPC 2024 Tehran R] I am Sherlocked
题目描述
苏格兰场(伦敦警察厅总部)的侦探们告知夏洛克·福尔摩斯,詹姆斯·莫里亚蒂对中央银行发动了一次网络攻击。他们还发现存在一个可以阻止攻击的密码。根据他们的顶级特工的情报,莫里亚蒂将这个密码隐藏在他的一位客户的电话簿中。有趣的是,夏洛克可以接触到这位神秘的客户!
据了解,每个正确的电话号码都有 $11$ 位数字,并且以数字 $0$ 开头。莫里亚蒂的客户可能在每个电话号码的数字之间使用连字符("-")或空格字符进行分隔。甚至对于电话簿中的某些电话号码,开头的数字 $0$ 可能缺失。例如,电话号码 "09163264128" 可能被写成 "916 32 64 128",甚至 "- 0916-16-32--64 - 128-"。夏洛克并不清楚电话簿的确切内容,但根据他以往的知识,他知道电话簿主人是如何书写电话号码的。
夏洛克与电话簿的主人安排了一次在咖啡馆的友好交谈。与此同时,夏洛克的同事约翰·华生医生偷偷拿走了电话簿。夏洛克指示华生医生将电话簿清理成一个新的、由数字字符组成的清理后序列 $C$,存入他的电脑。该序列是零索引的,即第一个元素的索引为零。为此,华生医生应将电话号码按其在电话簿中出现的顺序连续地(不带任何非数字/分隔字符)输入电脑。为了清理电话号码,他应删除所有非数字字符,并在必要时添加开头的 $0$。
根据计划,夏洛克将与这位神秘客户进行一次非正式交谈。一旦他获得关于密码的任何信息,他就会发送给华生医生。为此,华生医生已经准备好了清理后的序列 $C$,并将光标置于开头字符处。这个光标可以放置在 $C$ 的任何字符之前。他需要等待夏洛克的指令来生成输出序列 $S$。
夏洛克假设华生医生已经制作好了清理后的序列 $C$,并基于此发送以下指令之一:
1. **go** $i$:将光标移动到 $C$ 中第 $i$ 个清理后的电话号码的开头。例如,要跳转到 $C$ 中的第一个电话号码,他会使用 "go 0"。
2. **forward** $i$:将光标向前移动 $i$ 位数字。
3. **backward** $i$:将光标向后移动 $i$ 位数字。
4. **next** $i$:从当前位置开始,将接下来的 $i$ 位数字写入 $S$。更具体地说,如果华生医生的光标在位置 $c$ 之前,他应该选取数字 $c, c+1, \ldots, c+i-1$,但光标位置保持不变。
5. **pick** $i$ $j$:如果 $i < j$,则从当前电话号码(即光标后数字所属的电话号码)的位置 $i$ 到 $j$ ($i, i+1, \ldots, j$) 将数字写入 $S$。否则,他应该写入 $(i, i-1, \ldots, j)$。同样,光标位置保持不变。注意 $0 \leq i, j \leq 10$,且 "pick 0 0" 将选取第一个数字。
为了进行可能的修正,夏洛克也可能发送以下指令:
- **delete** $i$:从 $S$ 的末尾删除最后 $i$ 位数字。
输入格式
输入由电话簿的内容和夏洛克的指令组成。电话簿包含 $n$ 个电话号码 ($1 \leq n \leq 1000$),由逗号或换行符分隔。电话簿中的每个电话号码是一个字符串,由 $10$ 或 $11$ 位数字 (0-9) 以及可能的连字符("-")和/或空格字符组成。电话簿的大小(即电话簿中的字符数)不超过 $10^6$ 个字符。电话号码列表以单独一行包含单个字符 "#" 结束。
接下来的每一行包含夏洛克的一条指令。他最多会发送 $10000$ 条指令。所有指令的参数都是不大于 $20000$ 的非负整数。保证夏洛克的所有短信都是上述六种指令形式之一。
输出格式
输出提取出的秘密密码(可能为空),它是一个数字字符串。如果提取出的秘密密码超过 $10000$ 位数字,则仅输出前 $10000$ 位数字。夏洛克可能会分心并发送有故障的指令。他可能会跳转到一个不存在的电话号码(使用 "go"),或者为 "forward"、"backward"、"next"、"pick" 和 "delete" 发送无效参数,即指令引用了清理后序列 $C$ 中不存在的数字或电话号码。在这种情况下,你认为莫里亚蒂已经成功,并输出大写的 **MISS ME!**。
说明/提示
翻译由 DeepSeek V3 完成