题号:NC308100
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述

我们定义一个长度为

的序列

为「人造序列」,当且仅当满足以下条件:

对于所有

,都有

现在给定一个长度为

的序列

,你可以进行无限轮操作,每一轮操作:

选择任意三个相邻的位置;

将其中两个位置的数值同时加

;

将剩下一个位置的数值减

。

你的目标是通过最少轮操作,使序列

变成人造序列。

此外,你需要支持

次单点修改:每次给出一对
)
,表示将

修改为

。

每次修改后,你都需要重新计算最小操作次数。注意:这些修改是相互影响的。
输入描述:
第一行输入两个整数
,表示序列长度、修改次数。
第二行输入
个整数
,表示初始序列。
此后
行,第
行输入两个整数
,表示第
次修改操作的参数。
输出描述:
第一行输出一个整数,表示初始序列变成人造序列所需的最小操作次数。
此后
行,每行输出一个整数,表示修改后的最小操作次数。
示例1
输入
复制
3 7
3 3 2 5 1 3 1
1 2
1 3
3 2
3 5
2 4
2 3
4 4
说明
对于序列
![[3,3,2,5,1,3,1]](https://hr.nowcoder.com/equation?tex=%5B3%2C3%2C2%2C5%2C1%2C3%2C1%5D)
,执行两次位置

加

,位置

减

,位置

加

。最终序列
![[3,3,4,3,3,3,1]](https://hr.nowcoder.com/equation?tex=%5B3%2C3%2C4%2C3%2C3%2C3%2C1%5D)
,满足要求。
修改一次后,对于序列
![[2,3,2,5,1,3,1]](https://hr.nowcoder.com/equation?tex=%5B2%2C3%2C2%2C5%2C1%2C3%2C1%5D)
,执行操作:位置

减

,位置

加

,位置

加

;位置

加

,位置

减

,位置

加

;位置

加

,位置

减

,位置

加

;最终序列
![[2,2,5,4,3,3,1]](https://hr.nowcoder.com/equation?tex=%5B2%2C2%2C5%2C4%2C3%2C3%2C1%5D)
,满足要求。
示例2
输入
复制
3 7
-882073681 -708416144 -412725361 249140755 -714769963 106737160 412181794
2 585842503
1 -697370064
6 -929022307
6 387510778
7 636011478
5 -438802112
6 -262455284
输出
复制
641341668
1144711654
1057424804
651736200
1197811613
1197811613
1059827687
734844656
备注: