最长连续相同字符
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给你一个仅有小写字母组成且长度为n的字符串a以及m条指令。
指令有以下两种类型:
  1. 1 l r ,查询区间[l,r]中最长连续相同字符串并输出该字符串的左右边界,如果有多个,输出左边界最小的那个
  2. 2 x ch,将a[x]改为ch,字符串下标从1开始
    

输入描述:

第一行两个正整数n和m。(1n,m1e5)
第二行一个长度为n的字符串a,a仅有小写字母构成
接下来m行,每行一条指令,每行首先有一个整数op,表示操作的类型。
1.若op = 1,则接下来有两个整数l,r,表示查询区间[l,r]内最长连续相同字符串。
2.若op = 2,则接下来有一个正整数x和一个字符ch,表示将字符串中下标为x的字符修改为ch

输出描述:

对于每个查询指令,输出两个整数,代表区间的左右边界
每个答案占一行
示例1

输入

复制
10 3
aabbbccdde
1 1 5
2 3 a
1 1 5

输出

复制
3 5
1 3