题号:NC50757
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld
题目描述
对于任意一个数列,如果能在有限次进行下列删数操作后将其删为空数列,则称这个数列可以删空。一次删数操作定义如下:
现有一个长度为n的数列a,有m次修改操作,第i次修改后你要回答:经过i次修改后的数列a,至少还需要修改几个数才可删空?
每次修改操作为单点修改或数列整体加一或数列整体减一。
输入描述:
第一行两个正整数n,m,分别表示数列长度、修改次数。
第二行有n个正整数,表示数列a,即输入的第i个数表示数列a的第i个数
。
接下来m行,每行两个整数p,x,表示一次修改操作。
当
时,该操作为单点修改,将数列中第p个数
修改为x。
当p=0时,该操作为数列整体加x。
输出描述:
输出m行,每行一个整数,第i行表示前i次修改后的答案。
示例1
输入
复制
3 9
1 2 3
1 1
0 1
0 1
0 1
2 2
3 2
0 -1
0 -1
0 -1
说明
第一次修改后,数列为(1,2,3),无需修改即可删空。
第四次修改后,数列为(4,5,6),需要将三个数都改掉才可能删空。
第六次修改后,数列为(4,2,2),将第一个数改成3即可删空。
第九次修改后,数列为(1,-1,-1),可以将第二个数改成2、第三个数改成3来删空。
备注:
对于

的数据,
p>0时,

。
p=0时,x=-1或1。