【题目描述】
给定一个由 N 个整数构成的序列 a0,a1,...,aN−1。
按顺序处理 Q 个如下类型的查询:
0 $i$ $x$:
- 若 i<∣a∣,在 ai 之前插入 x
- 若 i=∣a∣,在 a∣a∣−1 之后插入 x
1 $i$:删除 ai(剩余元素将拼接在一起)
2 $l$ $r$:翻转 al,al+1,al+2,…,ar−1
3 $l$ $r$ $b$ $c$:对于每个 i=l,l+1,l+2,…,r−1,令 ai←b×ai+c
4 $l$ $r$:输出 ∑i=lr−1aimod998244353
【输入】
文本
$N$ $Q$
$a_0$ $a_1$ ... $a_{N - 1}$
$\textrm{Query}_0$
$\textrm{Query}_1$
:
$\textrm{Query}_{Q - 1}$
【输出】
对于每个 4 $l$ $r$ 查询,输出一行一个整数,表示对应的答案。
【输入样例】
文本
5 6
1 10 100 1000 10000
4 1 4
0 2 100000
1 3
4 2 5
2 2 5
4 0 4
【输出样例】
【数据范围】
- 1≤N,Q≤500000
- 0≤ai<998244353
- 对于格式
0 $i$ $x$:
- 0≤i≤(当时的∣a∣)
- 0≤x<998244353
- 对于格式
1 $i$:
- 0≤i<(当时的∣a∣)
- 对于格式
2 $l$ $r$:
- 0≤l<r≤(当时的∣a∣)
- 对于格式
3 $l$ $r$ $b$ $c$:
- 0≤l<r≤(当时的∣a∣)
- 0≤b<998244353
- 0≤c<998244353
- 对于格式
4 $l$ $r$:
- 0≤l<r≤(当时的∣a∣)
【来源】
Library Checker(yosupo06) dynamic_sequence_range_affine_range_sum