P1101

序列终结者

序列终结者

网上有许多关于序列操作的题目。为了给这类问题提供一个具有代表性的模板,本题被称为“序列终结者”。

给定一个长度为 NN 的整数序列,初始时所有元素均为 00。你需要支持以下三种操作:

  1. 将区间 [L,R][L,R] 内的所有元素加上 VV;
  2. 翻转区间 [L,R][L,R],例如将序列 1,2,3,41,2,3,4 翻转为 4,3,2,14,3,2,1;
  3. 查询区间 [L,R][L,R] 内的最大值。

输入格式

第一行包含两个整数 NN 和 MM,分别表示序列长度和操作次数。

接下来 MM 行,每行描述一次操作:

  • 若 K=1K=1,输入四个整数 K,L,R,VK,L,R,V,表示将区间 [L,R][L,R] 内的所有元素加上 VV;
  • 若 K=2K=2,输入三个整数 K,L,RK,L,R,表示翻转区间 [L,R][L,R];
  • 若 K=3K=3,输入三个整数 K,L,RK,L,R,表示查询区间 [L,R][L,R] 内的最大值。

输出格式

对于每个第 33 种操作,输出一行,表示对应区间内的最大值。

样例输入

4 4
1 1 3 2
1 2 4 -1
2 1 3
3 2 4

样例输出

2

数据范围

  • 1≤N≤5×1041\le N\le 5\times 10^4;
  • 1≤M≤1051\le M\le 10^5;
  • 每次操作均满足 K∈{1,2,3}K\in\{1,2,3\} 且 1≤L≤R≤N1\le L\le R\le N;
  • 对于第 11 种操作,−104≤V≤104-10^4\le V\le 10^4;
  • 保证任意时刻的序列元素及查询答案均在有符号 6464 位整数范围内。

来源与许可

本题题面与测试数据整理自 BZOJ。

样例 1

输入

4 4
1 1 3 2
1 2 4 -1
2 1 3
3 2 4

输出

2