#D0701. 交换位置后查询

交换位置后查询

题目描述

现在有 nn 个学生排成一排,从左数第一个同学编号为 11,第二个同学编号为 22\dots,第 ii 个同学编号为 ii

老师有时调换某两位同学的位置,有时会找找某位同学。但是调换换的次数太多了,老师也不记得大家的顺序了,请你帮帮老师。

老师进行了次 mm 个操作,有下列三种:

  • 1 x y,把从左数第 xx 个同学与第 yy 个同学交换了位置。
  • 2 a,查询当前从左数第 aa 个同学的编号。
  • 3 b,查询编号为 bb 的同学在当前在从左数第几个。

对于每个操作 2 与操作 3,请你将查询的结果输出。

输入格式

第一行两个数 nnmm,用空格隔开。

接下来 mm 行每行一个操作,每个操作的格式是下面三种之一,参考题目描述。

  • 1 x y
  • 2 a
  • 3 b

输出格式

针对每一个操作 2 和操作 3,分别输出一行,为该次操作的查询结果。

7 6
2 3
3 5
1 1 3
1 3 5
2 5
3 1
3
5
1
5
  • 初始状态,77 位同学从左往右编号分别是 1234567
  • 第一个操作:查询左数第 33 个人的编号,结果为 33
  • 第二个操作:查询编号为 55 的人在左数第几个,结果为第 55
  • 第三个操作:把左数第 11 个人和左数第 33 个人交换位置。77 位同学从左往右编号分别是 3214567
  • 第四个操作:把左数第 33 个人和左数第 55 个人交换位置。操作之后,77 位同学从左往右编号分别是 3254167
  • 第五个操作:查询左数第 55 个人编号,结果为 11
  • 第六个操作:查询编号为 11 的人在左数第几个,结果为第 55

数据规模与约定

对于 100%100\% 的数据,2n,m5×1052 \le n,m \le 5\times10^5

  • 子任务 1(30 分):2n,m1032 \le n,m \le 10^3
  • 子任务 2(30 分):没有操作 3
  • 子任务 3(40 分):没有特殊限制