#HK5242. 「NOISG 2020 Final」Labels

「NOISG 2020 Final」Labels

题目描述

译自 NOISG 2020 Final T1. Labels

今天是快递员查尔斯的第一天工作。他被分配了运送 NN 个包裹,每个包裹上有一个(不一定唯一)介于 11NN 之间的标签编号。每天结束时,他需要报告一个包含 NN 个整数的序列 AA,即 A1,,ANA_1, \ldots, A_N,其中 AiA_i 是第 ii 个送达包裹的标签编号。

作为一名热爱数学的人,查尔斯决定使用差值编码来节省内存空间,并记录了一个包含 N1N-1 个整数的序列 DD,即 D1,,DN1D_1, \ldots, D_{N-1},其中 Di=Ai+1AiD_i = A_{i+1} - A_i

在送完所有包裹后,查尔斯意识到他不知道如何从 DD 恢复 AA。你的任务是帮助他恢复 AA,或者说明无法唯一恢复 AA

输入格式

程序需从标准输入读取数据。

第一行包含一个整数 NN,表示包裹总数。

第二行包含 N1N-1 个空格分隔的整数 D1,,DN1D_1, \ldots, D_{N-1},其中 DiD_i 表示第 (i+1)(i+1) 个送达包裹与第 ii 个送达包裹的标签编号之差。

输出格式

程序需向标准输出输出结果。

如果可以从 DD 唯一恢复 AA,输出 NN 个空格分隔的整数,表示序列 AA

否则,输出一行,包含单个整数 1-1

5
1 3 -2 1

1 2 5 3 4

可以唯一恢复 A=[1,2,5,3,4]A = [1, 2, 5, 3, 4]

这与 DD 一致,因为:

A2A1=21=1=D1A_2 - A_1 = 2 - 1 = 1 = D_1
A3A2=52=3=D2A_3 - A_2 = 5 - 2 = 3 = D_2
A4A3=35=2=D3A_4 - A_3 = 3 - 5 = -2 = D_3
A5A4=43=1=D4A_5 - A_4 = 4 - 3 = 1 = D_4

这个样例满足子任务 2,3,52, 3, 5 的限制。

5
2 2 -3 1

1 3 5 2 3

可以唯一恢复 A=[1,3,5,2,3]A = [1, 3, 5, 2, 3]。注意,标签编号可以出现多次。

这个样例满足子任务 2,3,52, 3, 5 的限制。

2
0

-1

这个样例满足所有子任务的限制。

数据范围与提示

对于所有输入数据,满足:

  • 2N3×1052 \leq N \leq 3 \times 10^5
  • 1AiN1 \leq A_i \leq N
  • N<Di<N-N < D_i < N

详细子任务附加限制及分值如下表所示:

子任务 分值 附加限制
11 77 N=2N = 2
22 1515 2N62 \leq N \leq 6
33 2525 2N1032 \leq N \leq 10^3
44 1818 1Di1-1 \leq D_i \leq 1
55 3535 无附加限制