#P15882. [ICPC 2026 NAC] Heist of the Century
[ICPC 2026 NAC] Heist of the Century
说明
在精心策划了盗窃蒙特卡洛伯爵王冠宝石的最复杂计划之后,你遇到了最后的障碍:一个上锁的保险柜。不过,你为此训练已久,并磨练了开锁技巧。
保险柜有 个拨盘,每个拨盘可以设置为 到 之间的任意整数值。蒙特卡洛伯爵为保险柜预设了每个拨盘的正确秘密值。要尝试打开保险柜,你可以为每个拨盘设置一个值,然后转动保险柜的门把手。如果每个拨盘都设置到了正确的秘密值,你会感到没有阻力,门会立即打开。
当然,通过随机猜测所有正确的秘密值来打开保险柜是极不可能成功的。然而,作为一位开锁专家,即使猜测错误,你在尝试开门时也会感受到一定的阻力,并可以利用这些信息来帮助推断正确的秘密值。如果一个拨盘的秘密值是 ,而你在尝试开门时将其设置为 ,该拨盘会对转动门把手产生 的阻力。你能感受到所有拨盘中的 最大 阻力。(注意,如果该值为 ,则说明你已成功打开保险柜,完成了盗窃!)
不幸的是,安保团队已经意识到你的存在,并且正在向你靠近。你每秒只能尝试开锁一次,但他们距离你还有 秒!你能在被抓住之前完成盗窃吗?
交互方式
本题为交互题。
交互开始时,从标准输入读取一个整数 ,表示保险柜上拨盘的数量。
你的程序最多可以进行 次尝试打开保险柜,每次尝试你需要为每个拨盘指定一个值。每次尝试后,你将会被告知从门把手上感受到的阻力。
要进行一次尝试,请输出一行,包含 个空格分隔的整数 ,表示你为每个拨盘设定的值。然后从标准输入读取一个整数,表示你从门把手上感受到的阻力,即 ,其中 是第 个拨盘的秘密值(对你而言未知)。如果阻力为 ,则说明你已打开保险柜,程序应立即终止。否则,若还有剩余尝试次数,你可以继续尝试。
如果你用完了所有尝试次数,程序应干净退出(但你会因未能在规定时间内打开保险柜逃脱守卫而被判为错误)。
每个拨盘的秘密值由蒙特卡洛伯爵在盗窃前预先设定,不会随你的破解尝试而改变。
3
5
1
0
1 1 1
3 4 5
4 5 6
提示
注意
在每行输出后请勿忘记刷新输出缓冲区,并在交互结束后干净退出。同时,请务必严格按照上述交互协议的要求输出对应行上的信息:例如,如果协议要求你在单行输出空格分隔的整数列表,评测器 不会 接受每个整数单独占一行的情况。
如果评测器接收到无效或意外的输入,它将输出 并立即退出。你的程序必须检测到此错误报告并干净退出,以便得到 Wrong Answer 的评测结果。如果你的程序阻塞等待与评测器的进一步交互,或试图将 解释为阻力值,你可能会收到其他被拒的评测结果(如 Time Limit Exceeded 或 Runtime Error)而不是 Wrong Answer。
已为你提供用于本地测试的命令行工具。该工具顶部有注释说明其使用方法。
翻译由 DeepSeek V3.2 完成
京公网安备 11011102002149号