CF2206A Compare Suffixes

题目描述

评测程序拥有一个长度为 $n$ 的隐藏字符串 $S$ ,该字符串仅包含小写拉丁字母(a–z)。你无法直接访问这个字符串。开始时,你只知道字符串 $n$ 的长度。 你的任务是通过有限次询问,确定所有 $n$ 个后缀的排列顺序。 对于一个整数 $k$ ($1\le k \le n$),$S(k)$ 表示从第 $k$ 个字符开始的 $S$ 的后缀。特别地,$S(1)=S$。 在一次询问中,你可以指定两个不同的整数 $i$ 和 $j$。评测程序会按字典序比较 $S(i)$ 和 $S(j)$,并返回 $S(i)S(j)$。注意,对于 $i\ne j$ 的情况,不会出现相等,因为所有后缀都是不同的。 请找出一个 $(p_1,p_2,\ldots,p_n)$ 的排列,使得 $S(p_1)

输入格式

**交互方式** 输入的第一行包含一个整数 $n$($2 \le n \le 1000$)。 要发出一个查询,你的程序应输出形式为“query $i$ $j$”的一行($1 \le i \le n$;$1 \le j \le n$;$i \ne j$)。随后,将出现一行输入,其中包含 first 或 second。包含 first 的行表示 $S(i) \lt S(j)$,而包含 second 的行表示 $S(i) \gt S(j)$。 一旦确定了后缀的排序,你的程序应输出形式为 “answer $p_1\ p_2\ \ldots\ p_n$” 的行。之后,交互结束,你的程序应终止运行且不再输出任何内容。 你的程序最多可发出 $6260$ 次查询。若查询次数超过 $6260$ 次,将被判定为“答案错误”。 保证隐藏字符串 $S$ 仅由小写字母(a–z)组成。 关于交互式评分的说明: - 交互库不是自适应的,即字符串 $S$ 是预先确定的,而非根据你的查询动态生成的。 - 写入输出缓冲区后,请务必清空缓冲区。 - 附件中(洛谷没爬过来,需要回原站找)为你提供了用于本地测试的命令行工具,以及与示例交互对应的输入文件。你可以下载这些文件。该工具顶部附有注释说明其使用方法。

输出格式

说明/提示

样例交互解释 #1 在本样例中,假设 $S=\texttt{icpc}$。四个后缀的字典序排列为 $S(4)