#P11266. 【模板】完全体·堆

【模板】完全体·堆

题目背景

感谢

https://www.luogu.com.cn/user/121027
版数据生成器。

gen

题目描述

给定正整数 nnmm 以及一个长为 nn 的整数序列 a1,,na_{1,\dots,n}

你需要维护序列 a1,,na_{1,\dots,n} 以及 nn 个集合 S1,,nS_{1,\dots,n},初始时 Si={i}S_i=\{i\}

接下来要进行以下四种操作共 mm 次,每次操作形如:

  • 0 x y:表示将元素 yy 从集合 SxS_x 中删去。保证此时元素 yy 在集合 SxS_x 中。
  • 1 x:表示询问 miniSxai\min_{i\in S_x} a_i,保证此时集合 SxS_x 非空。
  • 2 x y:将集合 SyS_y 中并入 SxS_x 并清空集合 SyS_y。保证此时集合 Sx,SyS_x,S_y 均非空,且此次操作后不会再出现涉及集合 SyS_y 的操作。
  • 3 x y z:表示将 aya_y 赋值为 zz。保证此时元素 yy 在集合 SxS_x 中,且 z<ayz<a_y

不难发现这是一道堆的模板题,所以现在请你完成它。

输入格式

第一行两个正整数 nnmm

第二行 nn 个正整数,第 ii 个正整数表示 aia_i

接下来 mm 行每行一个操作如题。

输出格式

对于每个 1 操作一行整数(注意不保证依然为正)表示答案。

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

提示

对于 20%20\% 的数据,n=m=10n=m=10

对于 80%80\% 的数据,n=m=105n=m=10^5

对于 100%100\% 的数据,1n,m1061\le n,m\le10^61ai2×1091\le a_i\le2\times10^9,保证任意时刻任意堆中元素绝对值不超过 101510^{15}(人话:保证每次 3 操作最多单点减 5×1085\times10^8)。


最后两个点出题人的手写堆和 pbds 的配对堆都跑到了几百毫秒,如果有被卡常的可私。