CF1886C.Decreasing String

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

回忆一下,如果字符串 aa 是字符串 bb 的前缀(且 aba \ne b),或者存在某个下标 ii1imin(a,b)1 \le i \le \min(|a|, |b|))使得 ai<bia_i < b_i,并且对于任意下标 jj1j<i1 \le j < i)都有 aj=bja_j = b_j,那么字符串 aa 在字典序上小于字符串 bb

现在给定一个由小写拉丁字母组成的字符串序列 s1,s2,,sns_1, s_2, \dots, s_n。字符串 s1s_1 已经给出,其他字符串按照如下规则生成:要得到字符串 sis_i,从字符串 si1s_{i-1} 中删除一个字符,使得得到的字符串 sis_i 在字典序上最小。

例如,如果 s1=dacbs_1 = \mathrm{dacb},那么 s2=acbs_2 = \mathrm{acb}s3=abs_3 = \mathrm{ab}s4=as_4 = \mathrm{a}

接下来我们得到字符串 S=s1+s2++snS = s_1 + s_2 + \dots + s_nSS 表示所有字符串 s1,s2,,sns_1, s_2, \dots, s_n 的拼接)。

你需要输出字符串 SS 的第 pospos 个字符(即 SposS_{pos})。

输入格式

第一行包含一个整数 tt,表示测试用例的数量(1t1041 \le t \le 10^4)。

每个测试用例包含两行。第一行是字符串 s1s_11s11061 \le |s_1| \le 10^6),由小写拉丁字母组成。第二行包含一个整数 pospos1poss1(s1+1)21 \le pos \le \frac{|s_1| \cdot (|s_1| + 1)}{2})。你可以认为 nn 等于给定字符串的长度(n=s1n = |s_1|)。

输入的额外限制:所有测试用例中 s1|s_1| 的总和不超过 10610^6

输出格式

对于每个测试用例,输出答案——即字符串 SS 的第 pospos 个字符。注意,不同测试用例的答案之间不需要用空格或换行分隔。

输入输出样例

  • 输入#1

    3
    cab
    6
    abcd
    9
    x
    1

    输出#1

    abx
首页