#P3285. [SCOI2014] 方伯伯的OJ

[SCOI2014] 方伯伯的OJ

题目描述

方伯伯正在做他的 OJ。现在他在处理 OJ 上的用户排名问题。OJ 上注册了 nn 个用户,编号为 1n1\sim n,一开始他们按照编号排名。

方伯伯会按照心情对这些用户做以下四种操作,修改用户的排名和编号:

  1. 操作格式为 1  x  y1\ \ x\ \ y,意味着将编号为 xx 的用户编号改为 yy,而排名不变,执行完该操作后需要输出该用户在队列中的位置,数据保证 xx 必然出现在队列中,同时,yy 是一个当前不在排名中的编号。
  2. 操作格式为 2  x2\ \ x,意味着将编号为 xx 的用户的排名提升到第一位,执行完该操作后需要输出执行该操作前编号为 xx 用户的排名。
  3. 操作格式为 3  x3\ \ x,意味着将编号为 xx 的用户的排名降到最后一位,执行完该操作后需要输出执行该操作前编号为 xx 用户的排名。
  4. 操作格式为 4  k4\ \ k,意味着查询当前排名为 kk 的用户编号,执行完该操作后需要输出当前操作用户的编号。

但同时为了防止别人监听自己的工作,方伯伯对他的操作进行了加密,即将四种操作的格式分别改为了:

  • 1  x+a  y+a1\ \ x+a\ \ y+a
  • 2  x+a2\ \ x+a
  • 3  x+a3\ \ x+a
  • 4  k+a4\ \ k+a
  • 其中 aa 为上一次操作得到的输出,一开始 a=0a=0

例如:上一次操作得到的输出是 55,这一次操作的输入为:1  13  151\ \ 13\ \ 15 因为这个输入是经过加密后的,所以你应该处理的操作是 1  8  101\ \ 8\ \ 10

现在你截获了方伯伯的所有操作,希望你能给出结果。

输入格式

输入的第 11 行包含 22 个用空格分隔的整数 nnmm,表示初始用户数和操作数。此后有 mm 行,每行是一个询问,询问格式如上所示。

输出格式

输出包含 mm 行。每行包含一个整数,其中第 ii 行的整数表示第 ii 个操作的输出。

10 10
1 2 11
3 13
2 5
3 7
2 8
2 10
2 11
3 14
2 18
4 9
2
2
2
4
3
5
5
7
8
11

提示

对于 100%100\% 的数据,1n1081 \le n \le 10^81m1051 \le m \le 10^5

输入保证对于所有的操作 1,2,31,2,3xx 必然已经出现在队列中,同时对于所有操作 111y2×1081 \le y \le 2\times 10^8,并且 yy 没有出现在队列中。

对于所有操作 44,保证 1kn1 \le k \le n