1593. 水桶

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

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

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

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

      让第 xx 号水桶增加 kk 升水

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

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

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

输入

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

接下来输入 tt 行,每行首先输入一个整数 v(1v2)v(1\le v\le2) ,代表这是操作 vv ,若 v=1v=1 ,接下来在同一行输入 22 个整数 a,ba,b ,否则在同一行输入 11 个整数 xx,保证输入满足 1x,a,bn,ab1\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