luogu#P15953. [ICPC 2018 Jakarta R] Smart Thief

[ICPC 2018 Jakarta R] Smart Thief

题目描述

阿玉成功偷走了布迪的宝箱,准备揭开布迪隐藏的所有秘密。不幸的是,这个宝箱有一个安全系统,用来防止任何未经授权的人(例如阿玉)打开它。

要打开宝箱,阿玉必须输入一个长度为 NN 的正确 PIN 码(个人识别码),而她当然不知道这个 PIN 码。阿玉别无选择,只能尝试所有可能的 PIN 码组合。不过,阿玉注意到这个安全系统有一个有趣的(过时的)机制。

当你输入一个 NN 位 PIN 码时,系统会自动且立即进行评估,即你不需要按下某个“确认”按钮来提交 PIN 码。每当输入的 PIN 码错误时,系统会移除最旧的(第一个)数字,并将剩余的数字向左移动,因此你只需要再输入一个(最后一个)数字,即可使 PIN 码再次恢复长度为 NN。例如,设 N=4N = 4。如果我们输入 204320435204320435,那么实际上我们测试了 66 个 PIN 码(其中有 55 个不同的 PIN 码):

  • [20432043]2043520435,测试的 PIN 码 = 20432043
  • 22[04320432]04350435,测试的 PIN 码 = 04320432
  • 2020[43204320]435435,测试的 PIN 码 = 43204320
  • 204204[32043204]3535,测试的 PIN 码 = 32043204
  • 20432043[20432043]55,测试的 PIN 码 = 20432043
  • 2043220432[04350435],测试的 PIN 码 = 04350435

注意,在这个例子中 20432043 被测试了两次。

作为一名计算机科学专业的学生,阿玉知道通过尝试所有可能的组合来找到正确的 PIN 码非常耗时,但可惜没有其他办法。阿玉决定在第一天至少测试 KK 个不同的 PIN 码。你的任务是帮助阿玉,只需给出一个字符串 SS,其中包含至少 KK 个不同的 PIN 码作为子串。阿玉不关心将要测试哪些 PIN 码(只要至少有 KK 个不同的 PIN 码),也不关心 SS 中是否有 PIN 码被多次测试,但字符串 SS 需要尽可能短。如果存在多个可能的 SS 字符串,你可以输出其中任意一个。

请注意,由于这个系统相当老旧,只有 MM 个可用数字,范围从 0099

输入格式

输入的第一行包含三个整数:N M KN\ M\ K1N1000001 \leq N \leq 1000001M101 \leq M \leq 101Kmin(MN,100000)1 \leq K \leq \min(M^N, 100000)),分别表示 PIN 码的长度、可用数字的个数以及要测试的最小 PIN 码数量。下一行包含 MM 个整数:AiA_i0Ai90 \leq A_i \leq 9),表示可用的数字。你可以假设所有 AiA_i 互不相同。你还可以假设 NNMMKK 的取值使得答案的字符串长度不超过 100000100000

输出格式

输出一行,输出 最短的 字符串,该字符串包含至少 KK 个不同的 PIN 码作为子串。如果存在多个这样的字符串,输出其中任意一个。

3 2 5
4 7
7477447
2 5 9
1 2 3 4 5
1234554321
6 3 2
9 3 5
9353593

提示

样例输入 #1 的解释

使用字符串 74774477477447 测试了 55 个不同的长度为 33 的 PIN 码,即 447447477477744744747747774774

样例输入 #2 的解释

使用字符串 12345543211234554321 测试了 99 个不同的长度为 22 的 PIN 码,即 121221212323323234344343454554545555

样例输入 #3 的解释

使用字符串 93535939353593 测试了 22 个不同的长度为 66 的 PIN 码,即 353593353593935359935359

翻译由 DeepSeek V3.2 完成