题目背景
今天是快递员 Charles 的第一天工作。
题目描述
今天是快递员 Charles 的第一天工作。他需要派送 N 个包裹,每个包裹都有一个标签编号,编号范围为 1 到 N(不一定唯一)。每天结束时,他需要记录一个长度为 N 的序列 A,其中 Ai 是第 i 个派送包裹的标签编号。
为了节省存储空间,Charles 决定使用差分编码记录一个长度为 N−1 的序列 D,其中 Di=Ai+1−Ai。
完成派送后,Charles 发现他不知道如何从 D 恢复出 A。你的任务是帮助他恢复 A,或者判断是否无法唯一确定 A。
输入格式
- 第一行一个整数 N,表示包裹数量。
 
- 第二行一个长度为 N−1 的整数序列 D,其中 Di 表示第 i+1 个包裹和第 i 个包裹标签编号的差。
 
输出格式
- 如果可以唯一恢复 A,输出 N 个用空格分隔的整数,表示序列 A。
 
- 如果无法唯一恢复 A,输出 
-1。 
5
1 3 -2 1
1 2 5 3 4
5
2 2 -3 1
1 3 5 2 3
2
0
-1
提示
【样例解释】
对于样例 #1,差分序列 D=[1,3,−2,1],恢复出的序列为 A=[1,2,5,3,4],验证如下:
- A2−A1=2−1=1=D1
 
- A3−A2=5−2=3=D2
 
- A4−A3=3−5=−2=D3
 
- A5−A4=4−3=1=D4
 
对于样例 #2,可以唯一恢复 A=[1,3,5,2,3]。
对于样例 #3,差分序列 D=[0],序列可能为 A=[1,1] 或 A=[2,2],因此无法唯一恢复,输出 −1。
【数据范围】
- 2≤N≤3×105
 
- 1≤Ai≤N
 
- −N<Di<N
 
| 子任务编号 | 
分值 | 
限制条件 | 
| 1 | 
7 | 
N=2 | 
| 2 | 
15 | 
2≤N≤6 | 
| 3 | 
25 | 
2≤N≤103 | 
| 4 | 
18 | 
−1≤Di≤1 | 
| 5 | 
35 | 
无额外限制 |