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$。

输出格式

对于每个测试用例,在一行中输出每个查询的回答,并以空格分隔。