[语言月赛 202411] Rise
题目描述
Farmer Z 有一排 $n$ 个花盆,从左到右依次编号为 $1\sim n$。每盆花都有高度 $h_i$。初始时,所有的 $h_i=0$。
接下来 $m$ 天,Farmer Z 将在花盆上种花,具体的,在第 $i$ 天,Farmer Z 将进行以下操作中的**其中一个**。
- `water l r`,Farmer Z 对第 $l \sim r$ 号花盆浇水,使得 $h_l, h_{l + 1}, \cdots, h_r$ 均增长 $1$。
- `rise l r k`,Farmer Z 会依次查看第 $l \sim r$ 号花盆,如果 $i$ 号花盆的 $h_i\ge k$,则 Farmer Z 会摘下 $i$ 号花盆的花,使 $h_i$ 变为 $0$。
对于每个 `rise` 操作,你需要输出一行一个整数 $c$,表示被摘下的花的个数。
输入输出格式
输入格式
第一行两个整数 $n,m$,表示花盆的数量与种花的天数。
接下来 $m$ 行,每一行:
首先输入一个字符串 $op$。
如果 $op$ 为 `water`,后接两个整数 $l,r$,含义如题所示。否则,$op$ 为 `rise`,后接三个整数 $l,r,k$,含义如题所示。
输出格式
对于每个 `rise` 操作,输出一行一个整数 $c$,表示该次操作被摘下的花的个数。
输入输出样例
输入样例 #1
5 6
water 2 4
water 3 5
rise 1 3 2
water 1 5
rise 1 5 1
rise 1 5 1
输出样例 #1
1
5
0
输入样例 #2
2 3
rise 1 2 1
water 1 1
rise 1 2 1
输出样例 #2
0
1
输入样例 #3
1 4
water 1 1
water 1 1
rise 1 1 3
rise 1 1 2
输出样例 #3
0
1
说明
### 样例 #1 解释
共有五盆花,初始时 $h_i$ 为:$(0,0,0,0,0)$。
第一次操作,对第 $2,3,4$ 盆花浇水,它们的 $h_i$ 增加 $1$,$h_i$ 变为:$(0,1,1,1,0)$。
第二次操作,对第 $3,4,5$ 盆花浇水, $h_i$ 变为:$(0,1,2,2,1)$。
第三次操作,在第 $1,2,3$ 盆花中,只有 $h_3\ge 2$,所以收割了第 $3$ 盆花,共 $1$ 盆,故输出一行 $1$,$h_i$ 变为 $0,1,0,2,1$。
第四次操作,对所有花浇水,$h_i$ 变为 $(1,2,1,3,2)$。
第五次操作,所有花都被收割了,共 $5$ 盆,故输出一行 $5$,$h_i$ 变为 $(0,0,0,0,0)$。
第六次操作,没有花被收割,共 $0$ 盆,故输出一行 $0$。
### 数据范围
对于 $100\%$ 的数据,$1\le n,m,k\le 1000$,$op$ 为 `water` 或 `rise`,$1\le l\le r\le n。$
对于前 $10\%$ 的数据,$n=1$。
对于前 $20\%$ 的数据,$n\le 2$。
另有 $10\%$ 的数据,$l=r$。
另有 $30\%$ 的数据,$k=1$。