1593. 水桶

一开始有 n 个没有水的容量无限大的水桶排成一列,编号从 1n ,对这些水桶装水,有以下两种装水操作方式:

  • 对编号区间 [a,b] 进行操作 1,具体会执行如下步骤:

    • 对区间 [a,b] 的每个水桶增加 1 升水
    • 对编号为 b 的水桶进行操作 2 (操作 2 见下文)
    • 如果子区间 [a+1,b-1] 非空区间,对该子区间继续进行操作 1
  • 对编号为 x 的水桶进行操作 2 ,具体会执行如下步骤:​

    • k 代表现在是自程序执行以来第几次进行到这一步

      让第 x 号水桶增加 k 升水

    • 如果 x+2\le n ,对区间 [x+1,x+2] 进行操作1

    • 如果 2x\le n ,对编号为 2x 的水桶继续进行操作 2

求最后每个水桶有多少升水。

输入

第一行输入两个整数 n,t(1\le n\le10^2,1\le t\le10)

接下来输入 t 行,每行首先输入一个整数 v(1\le v\le2) ,代表这是操作 v ,若 v=1 ,接下来在同一行输入 2 个整数 a,b ,否则在同一行输入 1 个整数 x,保证输入满足 1\le x,a,b\le n, a\le b

输出

每次操作结束后,在一行中输出每个水桶现在有多少滴水,每个水桶结果用空格隔开

样例

标准输入 复制文本
5 2
2 1
1 1 5
标准输出 复制文本
1 5 4 13 4
2 7 16 24 23
登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 68
通过 50