#524. [2025-10-28 P2] 互相看见的牛

[2025-10-28 P2] 互相看见的牛

【题目描述】

在一个竖直的平面直角坐标系中,N 头牛站在 x 轴上,第 i 头牛所站位置的 x 坐标恰好为 i,身高为 h_i。

我们认为这些牛的眼睛长在头顶上,即牛 i 的眼睛的坐标为 (i, h_i)。

对于两头牛 i 和 j,不妨假设 i < j ,如果两头牛之间存在一头牛 k 挡住了它们的视线,即存在一个 k 满足 i < k < j 并且 h_k 高于连接 (i,h_i) 和 (j,h_j) 的线段,则这两头牛互相看不见对方,否则,如果不存在这样的牛 k,则两头牛就可以互相看见。

现在给定 M 次操作,每次操作增加一头牛的身高,求每次操作后可以互相看见的牛的对数。

【输入格式】

第 1 行包含一个整数 N。

第 2 行包含 N 个整数 h_1,h_2,……,h_N。

第 3 行包含一个整数 M。

接下来 M 行,每行包含两个整数 p, q,其中 p 表示牛的编号,q 表示使得牛 p 增加的高度。

【输出格式】

M 行,每次操作后的答案占一行。

【样例输入】

5
2 4 3 1 5
3
4 3
1 3
3 2

【样例输出】

7
10
7

【样例解释】

初始时,以下的牛对之间可以互相看到:{1,2},{2,3},{2,5},{3,4},{3,5},{4,5},共 6 对。

第一次操作后,牛 4 的身高变为 4,使得 {2,4} 可以互相看见,其他互相可见的牛没有影响,答案变为 7。

第二次操作后,牛 1 的身高变为 5,使得牛 1 可以看见牛 3,4 和 5,其他互相可见的牛没有影响,答案变为 10。

第三次操作后,牛 3 的身高变为 5,挡住了 {1,4},{2,4},{2,5} 三对牛的视线,其他互相可见的牛没有影响,答案变为 7。

【数据范围】

全部数据满足 0 ≤ h_i ≤ 10^9, 1 ≤ p ≤ N, 1 ≤ q ≤ 2^30, 且输入保证每次更新后的牛的身高不超过 2^30。

其中有 20%的测试点满足 1 ≤ N ≤ 100, 1 ≤ M ≤ 100。

其中有 30%的测试点满足 1 ≤ N ≤ 2000, 1 ≤ M ≤ 10。

其中有 50%的测试点满足 1 ≤ N ≤ 2000, 1 ≤ M ≤ 2000。