#4003. [USACO25OPEN] Election Queries G

[USACO25OPEN] Election Queries G

[USACO25OPEN] Election Queries G

题目描述

注意:本题时间限制为 3 秒,是默认时间的 1.5 倍。

农夫约翰有 NN 头(2≤N≤2⋅1052 \leq N \leq 2 \cdot 10^5)编号从 11 到 NN 的奶牛。农场正在举行选举,将选出两头新的领头牛。初始时,已知第 ii 头奶牛会投票给第 aia_i 头奶牛(1≤ai≤N1 \leq a_i \leq N)。

选举过程如下:

  1. 农夫约翰任意选择一个非空真子集 SS(即至少包含一头牛但不包含所有牛)。
  2. 在 SS 集合中,得票数最多的候选牛将被选为第一头领头牛 xx。
  3. 在剩余奶牛组成的集合中,得票数最多的候选牛将被选为第二头领头牛 yy。
  4. 定义两头领头牛的差异度为 ∣x−y∣|x - y|。若无法选出两头不同的领头牛,则差异度为 00。

由于奶牛们经常改变主意,农夫约翰需要进行 QQ 次(1≤Q≤1051 \leq Q \leq 10^5)查询。每次查询会修改一头奶牛的投票对象,你需要回答当前状态下可能获得的最大差异度。

输入格式

第一行包含 NN 和 QQ。

第二行包含初始投票数组 a1,a2,…,aNa_1, a_2, \ldots, a_N。

接下来 QQ 行,每行两个整数 ii 和 xx,表示将 aia_i 修改为 xx。

输出格式

输出 QQ 行,第 ii 行表示前 ii 次查询后的最大可能差异度。

输入输出样例 #1

输入 #1

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

输出 #1

4
3
2

输入输出样例 #2

输入 #2

8 5
8 1 4 2 5 4 2 3
7 4
8 4
4 1
5 8
8 4

输出 #2

4
4
4
7
7

说明/提示

样例一解释:

第一次查询后,a=[1,2,4,4,5]a = [1,2,4,4,5]。选择 S={1,3}S = \{1,3\} 时:

  • SS 中:牛 11 得 11 票,牛 44 得 11 票 →\to 可选择牛 11 或牛 44 作为第一头领头牛。
  • 剩余牛中:牛 2,4,52,4,5 各得 11 票 →\to 可选择牛 2,4,52,4,5 作为第二头领头牛。

最大差异度为 ∣1−5∣=4|1-5| = 4。

第二次查询后,a=[2,2,4,4,5]a = [2,2,4,4,5]。选择 S={4,5}S = \{4,5\} 时:

  • SS 中:牛 44 得 11 票,牛 55 得 11 票。
  • 剩余牛中:牛 22 得 22 票。

最大差异度为 ∣5−2∣=3|5-2| = 3。

  • 测试点 3∼43\sim4:N,Q≤100N,Q \leq 100。
  • 测试点 5∼75\sim7:N,Q≤3000N,Q \leq 3000。
  • 测试点 8∼158\sim15:无额外限制。