#4995. Problem 3. It's Mooin' Time III

0

Problem 3. It's Mooin' Time III

Problem 3. It's Mooin' Time III

USACO 2025 US Open Contest, Bronze

Elsie 正在试图向 Bessie 描述她最喜欢的 USACO 竞赛,但 Bessie 很难理解为什么 Elsie 这么喜欢它。Elsie 说「现在是哞哞时间!谁想哞哞?请,我只想参加 USACO」。

Bessie 仍然不理解,于是她将 Elsie 的描述转文字得到了一个长为 NN3N1053 \leq N \leq 10^5)的字符串,包含小写字母字符 s1s2sNs_1s_2 \ldots s_N。Elsie 认为一个包含三个字符的字符串 tt 是一个哞叫,如果 t2=t3t_2 = t_3t2t1t_2 \neq t_1

一个三元组 (i,j,k)(i, j, k) 是合法的,如果 i<j<ki < j < k 且字符串 sisjsks_i s_j s_k 组成一个哞叫。对于该三元组,FJ 执行以下操作计算其值:

  • FJ 将字符串 ss 在索引 jj 处弯曲 90 度
  • 该三元组的值是 Δijk\Delta ijk 的面积的两倍。

换句话说,该三元组的值等于 (ji)(kj)(j-i)(k-j)

Bessie 向你进行 QQ1Q31041 \leq Q \leq 3 \cdot 10^4)个查询。在每个查询中,她给你两个整数 llrr1lrN1 \leq l \leq r \leq Nrl+13r-l+1 \ge 3),并询问满足 lil \leq ikrk \leq r 的所有合法三元组 (i,j,k)(i, j, k) 的最大值。如果不存在合法的三元组,输出 1-1

注意这个问题涉及到的整数可能需要使用 64 位整数类型(例如,C/C++ 中的 "long long")。

输入格式(从终端 / 标准输入读入):

输入的第一行包含两个整数 NNQQ

以下一行包含 s1s2,sNs_1 s_2, \ldots s_N

以下 QQ 行每行包含两个整数 llrr,表示每个查询。

输出格式(输出至终端 / 标准输出):

对于每一个查询输出一行,包含对于该查询的答案。

输入样例:


12 5
abcabbacabac
1 12
2 7
4 8
2 5
3 10

输出样例:


28
6
1
-1
12

对于第一个查询,(i,j,k)(i,j,k) 必须满足 1i<j<k121 \le i < j < k \le 12。可以证明,对于某个合法的 (i,j,k)(i,j,k)Δijk\Delta ijk 的最大面积在 i=1i=1j=8j=8 以及 k=12k=12 时取到。注意 s1s8s12s_1 s_8 s_{12} 是字符串 "acc",根据前述定义是一个哞叫。Δijk\Delta ijk 的直角边长为 7744,从而它的面积的两倍将等于 2828

对于第三个查询,(i,j,k)(i,j,k) 必须满足 4i<j<k84 \le i < j < k \le 8。可以证明,对于某个合法的 (i,j,k)(i,j,k)Δijk\Delta ijk 的最大面积在 i=4i=4j=5j=5 以及 k=6k=6 时取到。

对于第四个查询,不存在满足 2i<j<k52 \le i < j < k \le 5(i,j,k)(i,j,k) 使得 sisjsks_i s_j s_k 是一个哞叫,所以该查询的输出为 1-1

测试点性质: 测试点 2-3:N,Q50N,Q\le 50。测试点 4-6:Q=1Q=1,唯一的询问满足 l=1l=1r=Nr=N。测试点 7-11:没有额外限制。

供题:Chongtian Ma