世界闻名的侦探赫尔克里·波洛(Hercule Poirot)正在“东方快车”(Disorient Express)的包厢里享用一杯美味的茶,这时列车员冲了进来。“我们弄丢了车厢数量的记录,”列车员惊呼道。你看,这列火车非同寻常,没有第一节或最后一节车厢。相反,车厢首尾相连形成了一个大圆环,这让列车员感到困惑。
Train. Unsplash License by Robin Ulrich on Unsplash
波洛思考了片刻。“这太奇怪了,”他说,“但我或许能帮你。”他伸手拿起了边桌上的灯。“你看,每节车厢都有一个像这样的电灯开关。通过在车厢之间移动并拨动这些开关,我们可以确定车厢的数量。”
列车员虽然持怀疑态度,但还是同意试一试。“我们很赶时间,”他说,“所以请在最多 $3n + 500$ 步内确定火车的车厢数量 $n$。”这里的一步是指移动到相邻车厢或拨动当前车厢的电灯开关。“我唯一确定的是 $n$ 至少为 3,最多为 5000。”
交互
这是一个交互式问题。你的提交将与一个交互器(interactor)进行交互,交互器会读取你提交程序的标准输出,并向你提交程序的标准输入写入数据。此交互需要遵循特定的协议:
交互器首先发送一个整数 $s$ ($s \in \{0, 1\}$),表示赫尔克里初始所在车厢的电灯开关状态。
随后,你的提交程序最多可以发送 $3n + 500$ 个步骤$^{1}$供赫尔克里执行,每一步通过打印一行格式为 “? a” 的内容来完成,其中 $a$ 为以下内容之一:
- “left”,向顺时针方向移动到相邻车厢,
- “right”,向逆时针方向移动到相邻车厢,或
- “flip”,拨动当前车厢的电灯开关。
每执行一步后,交互器会回复一个整数 $s$ ($s \in \{0, 1\}$),表示赫尔克里在执行完请求的步骤后,当前所在车厢的电灯开关状态。
当你确定了车厢数量 $n$ 后,打印一行格式为 “! n” ($3 \le n \le 5000$) 的内容,随后交互将停止。打印答案不计入查询次数。
交互器是非自适应的;电灯开关的初始状态由交互器在任何交互发生前确定。请确保在每次写入后刷新缓冲区。使用超过 $3n + 500$ 次查询将导致错误答案(Wrong Answer)判决。
题目提供了一个测试工具以帮助你开发解决方案。
$^{1}$注意,$n$ 是当前测试用例中实际的车厢数量,而不是车厢数量的最大可能值。
样例
输入格式 1
0 1 1 0 1 1 1 1
输出格式 1
? right ? right ? right ? flip ? left ? left ? left ! 3