1232 - Corner Kth ⇔ Corner Case

時間制限 2 秒 / メモリ制限 512 MB / 得点 100 / Writer ei1710 / x 3 / 統計 /


TLE
2sec
MLE
512MB
得点
100

問題文

正整数Kと、N個の正整数 A1,A2,,,AN があります。

最初、A1,A2,,,AN はそれぞれが独立した集合に属しています。

次の2種類のクエリを処理しなさい。クエリは全部でM個与えられます。

  • unite(X,Y): XYが属する集合を併合する。ただしXYがすでに同じ集合に属している場合は何もしない
  • findKth(X): Xが属する集合のうちK番目に小さい数を答える。ただし集合の要素数がKに満たない場合 1 を出力する。

入力

以下の形式で与えられる。

最初の1行にN,M,Kが与えられ、次の1行にAi(1iN)が空白区切りで与えられる。

続くM行にクエリが与えれる。

N M K
A1 A2 ... AN
query1
query2
:
queryM

queryは、

1 X Y
のとき、unite(X,Y)を表し、
2 X
のとき、findKth(X)を表す。

出力

各findKthクエリについて答えを1行に出力せよ。

制約

  • 1N,M105
  • 1KN
  • 1Ai109(1iN)
  • AiAj(ij)
  • X,YA
  • findKthクエリは必ず1度以上与えられる。

入出力例

入力1

10 10 3
1 2 3 4 5 6 7 8 9 10
1 1 3
1 1 4
1 1 5
1 2 6
1 2 7
1 2 8
2 1
2 2
2 10
2 6

出力1

4
7
-1
7

このサンプルでは最初の6個のクエリを処理すると {1,3,4,5},{2,6,7,8},{9},{10} にまとめられる。

ここで、1が属する集合で3番目に小さいのは4、 2と6が属する集合で3番目に小さいのは7である。10が属する集合は要素数が3に満たないため-1を出力する。

入力2

6 5 2
1 2 3 5 8 13
2 1
1 1 13
1 1 2
1 2 13
2 1

出力2

-1
2

クエリ4の時点で2と13がすでに同じ集合に属しているので何もしなくてよい