luogu#P7478. StickSuger

StickSuger

题目背景

YSGHYYDS

题目描述

YSGH 给你一个长度为 nn 的字符串 SS。设 SxS_x 表示字符串 SS 的第 xx 个字符。你可以选择一个二元组 (i,j)(i,j),然后交换 SiS_iSjS_j。二元组 (i,j)(i,j) 是合法的当且仅当 1i<jn1\leq i<j\leq n 并且交换后的字符串的字典序比原串大。

对于两个字符 c0,c1c_0,c_1,称 c0>c1c_0>c_1 当且仅当 c0c_0 的 ASCII 码大于 c1c_1 的 ASCII 码。

对于两个长度为 nn 的字符串 S,TS,TSS 的字典序大于 TT 当且仅当存在一个 i[0,n1]i\in [0,n-1] 使得 j[1,i],Sj=Tj\forall j\in[1,i],S_j=T_j, 并且 Si+1>Ti+1S_{i+1}>T_{i+1}

如果存在多种合法方案,输出最大的二元组。

对于两个二元组 (i1,j1)(i_1,j_1)(i2,j2)(i_2,j_2),称 (i1,j1)(i_1,j_1) 小于 (i2,j2)(i_2,j_2) 当且仅当 i1<i2(i1=i2j1<j2)i_1<i_2\lor(i_1=i_2\land j_1<j_2)

如果不存在合法方案,则输出 -1

保证 SS 只包含小写英文字母。

输入格式

第一行,一个正整数 nn,表示字符串 SS 的长度。

第二行,一个字符串 SS

输出格式

如果无解,输出 -1

否则一行输出两个整数 i,ji,j 表示最大的合法二元组 (i,j)(i,j)

3
acb
1 3
6
zyxwvu
-1
14
aabbccddccbbaa
6 8

提示

【样例解释 #1】

如果选择二元组 (2,3)(2,3),交换 S2S_2S3S_3 后的字符串为 abc,字典序比 acb 小,所以不合法。

如果选择二元组 (1,3)(1,3),交换 S1S_1S3S_3 后的字符串为 bca,字典序比 acb 大,是合法的。

虽然 (1,2)(1,2) 也是合法的,但是没有 (1,3)(1,3) 大。所以答案是 (1,3)(1,3)

【样例解释 #2】

容易看出任何一个二元组都不合法。


【数据范围】

本题采用捆绑测试。

对于 100%100\% 的数据,1n1061\leq n\leq 10^6SS 只包含小写英文字母。

  • Subtask 1(4 points):SS 只包含一种字符。
  • Subtask 2(10 points):n100n\leq 100
  • Subtask 3(16 points):n500n\leq 500
  • Subtask 4(25 points):n5000n\leq 5000
  • Subtask 5(18 points):n105n\leq 10^5
  • Subtask 6(27 points):n106n\leq 10^6