这个有问题
```
for(int i = 2;i <= n;i ++) a[i] -= a[i - 1];
```
你的本意是要初始化差分数组,但是直接用后者减去前者,就不止会减去前一项输入的值
比如样例的 1 1 1
初始化差分后应该是
```
1 1 1 // 原输入
-1 -1 // 后一赋前一项的负值
1 0 0 //最终的值
```
如果按照你写的就是
```
1 1 1 //输入
1 0 1 //直接用后一项减去前一项
```
改成这样就可以过了
```
int x;
cin >> x;
a[i] += x;
a[i + 1] -= x;
```
by luoguerepp @ 2024-04-05 10:56:59
@[luoguerepp](/user/1276544) 感谢!
by newbie_001 @ 2024-04-07 22:18:49