CFCF2206A.Compare Suffixes

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

评测程序拥有一个长度为 nn 的隐藏字符串 SS ,该字符串仅包含小写拉丁字母(a–z)。你无法直接访问这个字符串。开始时,你只知道字符串 nn 的长度。

你的任务是通过有限次询问,确定所有 nn 个后缀的排列顺序。

对于一个整数 kk (1kn1\le k \le n),S(k)S(k) 表示从第 kk 个字符开始的 SS 的后缀。特别地,S(1)=SS(1)=S

在一次询问中,你可以指定两个不同的整数 iijj。评测程序会按字典序比较 S(i)S(i)S(j)S(j),并返回 S(i)<S(j)S(i)<S(j) 还是 S(i)>S(j)S(i)>S(j)。注意,对于 iji\ne j 的情况,不会出现相等,因为所有后缀都是不同的。

请找出一个 (p1,p2,,pn)(p_1,p_2,\ldots,p_n) 的排列,使得 S(p1)<S(p2)<<S(pn)S(p_1)<S(p_2)<\cdots<S(p_n)

输入输出样例

  • 输入#1

    4
    
    first
    
    second
    
    first

    输出#1

    query 2 1
    
    query 2 4
    
    query 1 3
    
    answer 4 2 1 3

说明/提示

样例交互解释 #1

在本样例中,假设 S=icpcS=\texttt{icpc}。四个后缀的字典序排列为 S(4)<S(2)<S(1)<S(3)S(4)<S(2)<S(1)<S(3),因为 c<cpc<icpc<pc\texttt{c}<\texttt{cpc}<\texttt{icpc}<\texttt{pc}

在第一次和第三次询问中,返回 first,因为 S(2)<S(1)S(2)<S(1) 并且 S(1)<S(3)S(1)<S(3)。在第二次询问中,返回 second,因为 S(2)>S(4)S(2)>S(4)。通过这些回复你可以确定各后缀的顺序。

首页