提高⏱ 1000ms💾 256MB#P8013

题目描述

$n$ 个小根堆,第 $i$ 个堆只含一个数 $v_i$。支持 $m$ 次操作:操作一,把第 $a,b$ 个数所在的两个堆合并成一个新堆(若已在同一堆则忽略);操作二,输出第 $a$ 个数所在堆的最小值并删除它(保证该堆非空)。请用左偏树(可并堆)。

输入格式

第一行两个整数 $n,m$;第二行 $n$ 个整数 $v_i$;接下来 $m$ 行每行形如 1 a b2 a

输出格式

对每个操作二输出一行一个整数。

数据范围

$$1 \le n,m \le 10^5,\ 0 \le v_i \le 10^9$$

样例输入 #1
3 4
3 1 2
2 2
2 1
1 1 3
2 3
样例输出 #1
1
3
2
样例输入 #2
2 3
7 7
1 1 2
2 1
2 1
样例输出 #2
7
7