序列终结者
网上有许多关于序列操作的题目。为了给这类问题提供一个具有代表性的模板,本题被称为“序列终结者”。
给定一个长度为 的整数序列,初始时所有元素均为 。你需要支持以下三种操作:
- 将区间 内的所有元素加上 ;
- 翻转区间 ,例如将序列 翻转为 ;
- 查询区间 内的最大值。
输入格式
第一行包含两个整数 和 ,分别表示序列长度和操作次数。
接下来 行,每行描述一次操作:
- 若 ,输入四个整数 ,表示将区间 内的所有元素加上 ;
- 若 ,输入三个整数 ,表示翻转区间 ;
- 若 ,输入三个整数 ,表示查询区间 内的最大值。
输出格式
对于每个第 种操作,输出一行,表示对应区间内的最大值。
样例输入
4 4
1 1 3 2
1 2 4 -1
2 1 3
3 2 4
样例输出
2
数据范围
- ;
- ;
- 每次操作均满足 且 ;
- 对于第 种操作,;
- 保证任意时刻的序列元素及查询答案均在有符号 位整数范围内。
来源与许可
本题题面与测试数据整理自 BZOJ。
样例 1
输入
4 4
1 1 3 2
1 2 4 -1
2 1 3
3 2 4
输出
2