问题 6143 --加与乘(二)

6143: 加与乘(二)

题目描述

有 $n$ 个存储单元,每个单元可以存储一个整数,这些单元的编号为 $1$ 到 $n$ 。一开始,每个单元的数字都是 $0$,接下来依次有 $m$ 条指令: - 第一种指令以 `+` 开头,后接两个整数 $l$ 与 $r$,含义是将编号 $l$ 到编号 $r$ 单元的数字分别加一。 - 第二种指令以 `*` 开头,后接两个整数 $l$ 与 $r$,含义是重复执行第 $l$ 条指令到第 $r$ 条指令。保证这些指令的序号都在当前指令之前。 请输出每个单元格最后的数字,由于可能很大,输出它们模 $1,000,000,007$ 的余数。

输入

第一行:两个整数 $n$ 与 $m$ 第二行到第 $m+1$ 行:在第 $i+1$ 行,先有一个字符 `+` 或 `*`,后接两个整数 $l$ 与 $r$ - 若是 `+`,则保证 $1\leq l\leq r\leq n$ - 若是 `*`,则保证 $1\leq l\leq r

输出

共 $n$ 行,第 $i$ 行只有一个数表示第 $i$ 个单元内存储的整数模 $1,000,000,007$ 的余数

样例输入输出

输入#1 复制
3 3
+ 2 3
+ 1 2
* 1 2
输出#1 复制
2 
4 
2

提示

- 对于 $30\%$ 的数据,$1\leq n,m\leq 20$ - 对于 $60\%$ 的数据,$1\leq n,m\leq 1000$ - 对于 $100\%$ 的数据,$1\leq n,m\leq 200,000$
序号 标题 作者 发表时间 费用 订购数 操作