CF2086F Online Palindrome
题目描述
这是一个交互题。
裁判有一个由小写拉丁字母组成的字符串 $s$。该字符串满足以下约束条件:
- 字符串长度为不超过 $99$ 的奇数;
- 字符串仅由字符 "a" 和 "b" 组成。
另外有一个初始为空的字符串 $t$。接下来会进行 $|s|$ 个步骤。在第 $i$ 个步骤中,会发生以下事件:
- 首先,裁判会告诉你字符 $s_i$ 并将其追加到字符串 $t$ 的末尾;
- 然后,你可以交换 $t$ 中的任意两个字符,或者什么都不做。
你的任务是确保在第 $|s|$ 个步骤之后,字符串 $t$ 是一个回文串。
输入格式
无
输出格式
交互过程立即开始。
在每个步骤中,你的程序将接收一个字符——字符串 $s$ 的下一个字符,或者如果字符串已经结束则接收 "0"(零)。如果接收到字符 "0",你的程序必须立即终止。
在接收到 $s_{i}$ 后,你必须输出要交换的字符的位置,即两个整数 $l$ 和 $r$($1 \le l,r \le i$),或者如果你不想交换字符,则输出 "0 0"。
如果你的程序执行了无效操作,例如尝试交换不存在的字符位置,或者最终字符串 $t$ 不是回文串,裁判程序将在单独的一行打印一个字符 "X"。如果你的程序接收到 "X" 作为响应,它应该立即终止;否则,你的提交的判题结果将是未定义的。
本题的交互器不是自适应的,这意味着字符串 $s$ 在交互过程中不会改变。
在每次输出请求后,不要忘记输出换行符并刷新输出缓冲区。否则,你将收到 "Idleness limit exceeded" 的判题结果。为此,请使用:
- C++ 中的 `fflush(stdout)` 或 `cout.flush()`;
- Java 中的 `System.out.flush()`;
- Python 中的 `sys.stdout.flush()`;
- 其他语言请参考相关文档。
Hack 格式
对于 Hack,请使用以下格式。
第一行应包含一个整数 $|s|$ —— 字符串 $s$ 的长度。
第二行应包含字符串 $s$ 本身($1 \le |s| \le 99$,$|s| \bmod 2 = 1$),由小写拉丁字母 "a" 和 "b" 组成。
说明/提示
翻译由 DeepSeek V3 完成