CF2086F.Online Palindrome

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

这是一个交互题。

裁判有一个由小写拉丁字母组成的字符串 ss。该字符串满足以下约束条件:

  • 字符串长度为不超过 9999 的奇数;
  • 字符串仅由字符 "a" 和 "b" 组成。

另外有一个初始为空的字符串 tt。接下来会进行 ∣s∣|s| 个步骤。在第 ii 个步骤中,会发生以下事件:

  • 首先,裁判会告诉你字符 sis_i 并将其追加到字符串 tt 的末尾;
  • 然后,你可以交换 tt 中的任意两个字符,或者什么都不做。

你的任务是确保在第 ∣s∣|s| 个步骤之后,字符串 tt 是一个回文串。

输出格式

交互过程立即开始。

在每个步骤中,你的程序将接收一个字符——字符串 ss 的下一个字符,或者如果字符串已经结束则接收 "0"(零)。如果接收到字符 "0",你的程序必须立即终止。

在接收到 sis_{i} 后,你必须输出要交换的字符的位置,即两个整数 ll 和 rr(1≤l,r≤i1 \le l,r \le i),或者如果你不想交换字符,则输出 "0 0"。

如果你的程序执行了无效操作,例如尝试交换不存在的字符位置,或者最终字符串 tt 不是回文串,裁判程序将在单独的一行打印一个字符 "X"。如果你的程序接收到 "X" 作为响应,它应该立即终止;否则,你的提交的判题结果将是未定义的。

本题的交互器不是自适应的,这意味着字符串 ss 在交互过程中不会改变。

在每次输出请求后,不要忘记输出换行符并刷新输出缓冲区。否则,你将收到 "Idleness limit exceeded" 的判题结果。为此,请使用:

  • C++ 中的 fflush(stdout) 或 cout.flush();
  • Java 中的 System.out.flush();
  • Python 中的 sys.stdout.flush();
  • 其他语言请参考相关文档。

Hack 格式

对于 Hack,请使用以下格式。

第一行应包含一个整数 ∣s∣|s| —— 字符串 ss 的长度。

第二行应包含字符串 ss 本身(1≤∣s∣≤991 \le |s| \le 99,∣s∣ mod 2=1|s| \bmod 2 = 1),由小写拉丁字母 "a" 和 "b" 组成。

输入输出样例

  • 输入#1

    a
    
    a
    
    b
    
    0

    输出#1

    0 0
    
    1 2
    
    2 3
  • 输入#2

    a
    
    a
    
    b
    
    a
    
    b
    
    0

    输出#2

    0 0
    
    2 1
    
    3 2
    
    4 4
    
    4 5

说明/提示

翻译由 DeepSeek V3 完成

输入解题思路,AI测评打分。不知道怎么写?

首页