#12761. 差分修复员

差分修复员

差分修复员

题目描述

一名实习生在实现区间加法时,写了两种差分方案。

方案A(正确方案) 对区间 [l, r] 加 v 时记录:

d[l] += v d[r+1] -= v

方案B(错误方案) 对区间 [l, r] 加 v 时记录:

d[l] += v d[r] -= v

现在给定 n、l、r、v,初始数组 a[1..n] 全部为 0。

请分别按照两种方案构造差分数组,并通过前缀和还原最终数组 a。

输出两种方案得到的结果,用来观察两者的区别。


输入格式

输入一行四个整数:

n l r v

数据范围:

1 ≤ n ≤ 50 1 ≤ l ≤ r ≤ n -1000000000 ≤ v ≤ 1000000000


输出格式

输出两行。

第一行:方案A还原得到的数组 a 第二行:方案B还原得到的数组 a

每行输出 n 个整数,数字之间用空格分隔。


样例输入

5 2 4 3

样例输出

0 3 3 3 0
0 3 3 0 0

样例解释

正确差分:

d[2] += 3 d[5] -= 3

恢复数组:

0 3 3 3 0

错误差分:

d[2] += 3 d[4] -= 3

恢复数组:

0 3 3 0 0

可以看到位置 4 没有被正确修改。