问题3172--差分太简单喵~

3172: 差分太简单喵~

时间限制: 1 Sec  内存限制: 128 MB
提交: 175  解决: 108
[状态] [讨论版] [提交] [命题人:]
题目描述

C 已经学会了前缀和,于是决定进一步向喵喵学习差分



差分操作可以看做是前缀和操作的逆运算 ,即,  。

通俗来说,如果想对数组 a 的某一区间进行加或减操作,我们可以遍历对区间的每一个数进行加减操作,但是这样面对特殊的大数据时会无法处理;于是我们可以采用差分,仅在区间的开头标记加一个数,同时在区间的结束标记减去相同的数,代表加的这个数仅在区间范围内生效

差分操作能够解决某些前缀和处理不了的特殊的大数据,利用差分的形式实现离散化的操作。

例如:想要对数组 a[l, r] 区间 +k ,则可以转换为在一个数组 bl 位置加 k,同时在 br + 1 的位置减 k

注意到,假如对差分数组 b 进行前缀和操作,则可得到原数组 a



C 掌握差分技巧后,喵喵马上又出了一道题目来考验他:

在小 C 学习前缀和时候,喵喵记录了他每个时间增加的掌握度数组 a ,同时对数组 a 进行前缀和操作得到了数组 b 。但是粗心的喵喵忘记了保留原数组 a 的备份,于是来需求你的帮助。喵喵将把数组 b 交给你,请你帮他计算出原数组 a 的各个元素。

输入

第一行输入一个整数 n (  105 ),表示数组 b 的长度。

第二行输入 n 个整数 b1, b2, ……, bn ( 1  bi  105 ),每个整数间用一空格分开,表示数组 b 的各个元素。

输出

共两行,

第一行前缀和数组 bn 个元素,每个数之间用一个空格分隔。

第二行原数组 an 个元素,每个数之间用一个空格分隔。

样例输入 Copy
5
1 3 6 10 15
样例输出 Copy
1 3 6 10 15
1 2 3 4 5
提示
注意数据范围喵~
来源/分类