修改序列值
题号:NC16034
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

维护一个长度为n的正整数序列a[1],a[2]...a[n],支持修改序列中指定位置的值
每次修改后问对序列重复进行以下操作,需要进行几次操作才能使序列变为全0(询问后序列和询问前相同,不会变为全0):
选出序列中最大值的出现位置,若有多个最大值则选位置标号最小的一个,设位置为x,则将a[x-1],a[x],a[x+1]的值减1,如果序列中存在小于0的数,则把对应的数改为0

输入描述:

第一行一个整数n
接下来n行,每行一个整数a[i]
接下来一行一个整数q
接下来q行,每行两个用空格分隔的整数x[i],y[i],表示把a[x[i]]修改为y[i]

输出描述:

q行,每行一个整数表示答案
示例1

输入

复制
4
3
6
6
4
3
4 4
3 5
1 8

输出

复制
10
10
13

备注:

1<=n,q<=100000
1<=x[i]<=n
1<=a[i],y[i]<=1000000000