题目描述
在克罗什的家中,曾经有 n 个橱柜排成一排,第 i 个橱柜的高度为 hi。最近克罗什搬家了,但无法将这些橱柜一起带走。他希望购买 n 个新橱柜,并尽量让它们与原来的橱柜相似。
克罗什不记得每个橱柜的具体高度,但他记得每三个连续橱柜中最高与最低橱柜之间的高度差。换句话说,如果橱柜的高度序列为 h1,h2,…,hn,那么克罗什记得的值为 $w_i = \max(h_{i}, h_{i + 1}, h_{i + 2}) - \min(h_{i}, h_{i + 1}, h_{i + 2})$,其中 1≤i≤n−2。
在新家中,克罗什希望购买 n 个橱柜,使得一切如旧——所有的 wi 值必须保持不变。请帮助克罗什确定他应该购买哪些橱柜以及如何排列它们,或者判断他是否记错了,因为这样的橱柜序列可能并不存在。
输入格式
第一行包含两个整数 n 和 C (3≤n≤106,0≤C≤1012),分别表示橱柜的数量和对 wi 的限制。
第二行包含 n−2 个整数 w1,w2,…,wn−2 (0≤wi≤C)。
输出格式
如果无法购买满足条件的 n 个橱柜,则在单独一行中输出 No
。
否则,在第一行输出 Yes
,并在第二行输出 n 个整数 h1′,h2′,…,hn′ (0≤hi′≤1018),表示要购买的橱柜的高度。
可以证明,如果存在解,则在给定高度限制下一定存在一个解。
如果存在多个正确解,可以输出其中任意一个。
6
2 1 5 2 7 4
YES
2 3 1 6
5
1 3 1 9 20
NO
数据范围与提示
详细子任务附加限制及分值如下表所示。其中子任务 0 是样例。
子任务 |
分值 |
附加限制 |
子任务依赖 |
备注 |
1 |
5 |
n≤20,C≤20 |
0 |
|
2 |
7 |
n≤200,C≤200 |
0,1 |
3 |
13 |
n≤2000,C≤2000 |
0∼2 |
4 |
5 |
n≤100000,C≤20 |
0,1 |
5 |
5 |
n≤20,C≤100000 |
0,1 |
6 |
5 |
n≤50 |
0,1,5 |
7 |
15 |
n≤2000 |
0∼3,5,6 |
8 |
10 |
n≤100000,C≤100000 |
0∼5 |
9 |
15 |
n≤100000 |
0∼8 |
10 |
20 |
|
0∼9 |