#P11334. [NOISG2020 Finals] Progression
[NOISG2020 Finals] Progression
题目背景
Damian 正在开发一款视频游戏!
题目描述
该游戏包含 个任务,第 个任务的初始难度为 。为了让玩家感受到难度的渐进性,Damian 对任务难度进行了若干次调整操作。
游戏设计支持两种操作:
- 补丁操作:将任务 到 的难度按公式 增加。
- 重写操作:将任务 到 的难度直接设置为 。
为了让游戏更加有趣,Damian 希望找到任务的连续子序列,使它们的难度呈等差数列。玩家可以按顺序或倒序完成任务。任务 到 () 构成可玩子段当且仅当对所有 ,满足 ( 为某个整数,可以为负)。单个任务也构成长度为 的可玩子段。
Damian 有时需要回答一个查询:找出某一区间内最长的可玩子段长度。你需要帮助 Damian 处理这些查询。
输入格式
- 第一行包含两个整数 和 ,分别表示任务的数量和操作与查询的总数。
- 第二行包含 个整数,表示任务的初始难度 。
- 接下来的 行描述操作或查询:
- 若行首为 ,接下来为 ,表示补丁操作。
- 若行首为 ,接下来为 ,表示重写操作。
- 若行首为 ,接下来为 ,表示查询操作。
输出格式
对于每个查询操作,输出一个整数,表示指定区间内最长的可玩子段长度。
10 6
1 2 3 4 1 2 3 4 5 5
3 1 10
1 1 4 -1 -1
3 1 10
3 9 10
2 5 10 -2 -2
3 1 10
5
6
2
7
10 5
1 2 3 4 1 2 3 4 5 5
3 1 10
1 1 10 1 2
3 1 10
2 1 10 3 4
3 1 10
5
5
10
10 5
1 2 3 4 1 2 3 4 5 5
3 1 4
3 4 5
3 2 4
3 5 9
3 10 10
4
2
3
5
1
提示
【样例解释】
对于样例 #1:
- 第一次查询时,任务 到 构成最长可玩子段。
- 第一次补丁操作后,任务难度变为 。
第二次查询时,任务 到 构成最长可玩子段。 - 第二次补丁操作后,任务难度变为 。
最后一次查询时,任务 到 构成最长可玩子段。
【数据范围】
子任务编号 | 分值 | 限制条件 |
---|---|---|
无补丁和重写操作。 | ||
无重写操作。 | ||
无额外限制。 |