P3710 方方方的数据结构

题目描述

在很久很久以前,有一个长度为 $n$ 的数列,一开始数列全是 $0$。 方方方觉得这个数列太单调了,打算对它进行 $m$ 次操作,每次操作为区间加法或者区间乘法。 方方方进行一些操作之后,还可能会对某个数进行询问。 但是进行过一些操作之后,方方方可能会发现之前某次操作失误了,需要撤销这次操作,其它操作和其它操作的前后顺序保持不变。 方方方想好这些操作之后,马上想到了一个优秀的数据结构可以维护这些东西,可是他懒得写标程了,就生成了 $10$ 个**随机数据**,就把这道题扔给了你。 **数据全是随机的,生成方式见最下方的提示。**

输入格式

输出格式

说明/提示

对于 $20\%$ 的数据,$n,m \leq 500$,时限 1s。 对于 $50\%$ 的数据,$n,m \leq 30000$,时限 1s。 对于 $100\%$ 的数据,$1 \leq n,m \leq 150000$,$1 \le l \le r \le n$,$3$ 操作的 $p$ 满足 $1 \le p \le n$,$4$ 操作的 $p$ 满足 $1 \le p \le m$,$0 \leq d \leq 1073741823$(原因见数据生成器),时限 4.5s。 数据生成器: ```cpp #include using namespace std; int rand_() {return rand()&32767;} int br() {return rand_()*32768+rand_();} vector cs; int main() { srand(...); //这里要填一个种子 int n=...,m=...; //这里要填n、m cout