CF2117H Incessant Rain
题目描述
**注意本题的内存限制与通常不同。**
银狼给了你一个长度为 $n$ 的数组 $a$ 和 $q$ 个查询。在每个查询中,她替换数组中的一个元素。在每个查询后,她将询问你 $k$ 的最大值,使得存在一个整数 $x$ 和 $a$ 的一个子数组 $^*$,其中 $x$ 是该子数组的 $k$-多数。
若 $y$ 在数组 $b$ 中出现了至少 $\left\lfloor\frac{|b|+1}{2}\right\rfloor+k$ 次(其中 $|b|$ 表示 $b$ 的长度),则称 $y$ 是数组 $b$ 的 $k$-多数。注意 $b$ 可能不存在一个 $k$-多数。
$^*$ 若数组 $a$ 在删除开头和结尾的若干(可能为零或者全部)元素后可以得到数组 $b$,则称 $b$ 是 $a$ 的一个子数组。
输入格式
输入数据包含多个测试用例。输入数据的第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的个数。
对于每个测试用例:
- 第一行包含两个整数 $n$ 和 $q$($1 \le n, q \le 3 \cdot 10^5$),表示 $a$ 的长度和查询的数量。
- 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le n$)。
- 接下来的 $q$ 行中每行包含两个整数 $i$ 和 $x$,表示当前查询将 $a_i$ 替换为 $x$($1 \le i,x \le n$)。
输入数据保证所有测试用例的 $n$ 和 $q$ 之和均不超过 $3 \cdot 10^5$。
输出格式
对于每个测试用例,在一行中输出每个查询的回答,并以空格分隔。