小岛的宝石串
描述
这个题目要你维护一个 0/1 序列,支持以下操作。
(1)Set a b 0/1: 将 [a, b] 区间赋值为 0/1。
(2)Reverse a b: 将 [a, b] 区间的状态翻转。
(3)Count a b 0/1: 统计 [a, b] 区间有多少 0/1。
(4)Longest a b 0/1: 统计 [a, b] 最长一段 0/1 序列的左右端点。。如果没有则输出 -1。(如果有多解则输出字典序最小的一组)
(5)Query a: 询问 a 的颜色,以及它左右和他颜色相同的序列最长可以延伸到哪里。
格式
输入格式
一行 n 表示序列数目。(n <= 100000)
接下来 n 个数字 0/1 表示初始状态。
一行 m 表示操作数(m <= 100000)。接下来 m 个操作。
输出格式
对每个操作输出询问结果。
样例1
样例输入1
10
0 1 1 1 0 1 1 1 0 0
10
Set 1 10 0
Reverse 1 5
Set 6 9 1
Count 8 9 1
Query 3
Query 2
Reverse 1 8
Count 1 7 0
Set 2 5 0
Count 7 9 1
样例输出1
2
1 1 9
1 1 9
7
1
样例2
样例输入2
10
0 0 1 0 0 0 1 1 1 0
10
Longest 2 9 1
Set 2 4 1
Reverse 3 5
Count 5 10 0
Longest 6 6 1
Reverse 3 9
Set 2 10 1
Longest 3 6 1
Reverse 3 5
Query 3
样例输出2
7 9
2
-1
3 6
0 3 5
限制
来源
感谢 温馨与信赖的 岛哥 ^_^ 提供.