#C4E. 换座与查座

换座与查座

题意:

有 nn 个座位和 nn 名学生,座位与学生均编号为 11 到 nn,每个座位恰好坐一名学生。

给定初始座位安排,依次执行以下操作:

  • 1 x y:交换第 xx 个座位与第 yy 个座位上的学生。若 x=yx=y,安排不变。
  • 2 u:查询编号为 uu 的学生当前在哪个座位。

输入格式:

第一行两个整数 nn、qq(1≤n,q≤2×1051 \le n, q \le 2 \times 10^5),分别表示座位数量和操作次数。

第二行 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n(1≤ai≤n1 \le a_i \le n),其中 aia_i 表示初始坐在座位 ii 上的学生编号。保证这些数构成 11 到 nn 的一个排列。

接下来 qq 行,每行先给出一个整数 opop(op∈{1,2}op \in \{1,2\}),表示操作类型:

  • 若 op=1op=1,这一行随后给出两个整数 xx、yy(1≤x,y≤n1 \le x, y \le n),表示交换两个座位上的学生。
  • 若 op=2op=2,这一行随后给出一个整数 uu(1≤u≤n1 \le u \le n),表示查询该学生所在的座位。

输出格式:

对每次类型 22 操作输出一行,为查询到的座位编号。没有查询时不输出内容。

样例:

样例输入:

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

样例输出:

1
4
2

样例解释:

第一次查询时,编号 33 的学生在座位 11。

交换座位 11 和 44 后,该学生位于座位 44。

交换同一座位不会改变安排,编号 11 的学生仍在座位 22。