A6236 | 「SCOI2014」方伯伯的 OJ
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
方伯伯正在做他的 OJ。现在他在处理 OJ 上的用户排名问题。
OJ 上注册了 $n$ 个用户,编号为 $1 \sim n$,一开始他们按照编号排名。方伯伯会按照心情对这些用户做以下四种操作,修改用户的排名和编号:
1. 操作格式为 `
2. 操作格式为 `
3. 操作格式为 `
4. 操作格式为 `
但同时为了防止别人监听自己的工作,方伯伯对他的操作进行了加密,即将四种操作的格式分别改为了:
```plain
1 x+a y+a
2 x+a
3 x+a
4 k+a
```
其中 $a$ 为上一次操作得到的输出,一开始 $a=0$。
例如:
上一次操作得到的输出是 `
这一次操作的输入为:`
因为这个输入是经过加密后的,所以你应该处理的操作是`
现在你截获了方伯伯的所有操作,希望你能给出结果。
OJ 上注册了 $n$ 个用户,编号为 $1 \sim n$,一开始他们按照编号排名。方伯伯会按照心情对这些用户做以下四种操作,修改用户的排名和编号:
1. 操作格式为 `
1 x y`,意味着将编号为 $x$ 的用户编号改为 $y$,而排名不变,执行完该操作后需要输出该用户在排名中的位置,数据保证 $x$ 必然出现在排名中,同时 $y$ 是一个当前不在排名中的编号。2. 操作格式为 `
2 x`,意味着将编号为 $x$ 的用户的排名提升到第一位,执行完该操作后需要输出执行该操作前编号为 $x$ 用户的排名。3. 操作格式为 `
3 x`,意味着将编号为 $x$ 的用户的排名降到最后一位,执行完该操作后需要输出执行该操作前编号为 $x$ 用户的排名。4. 操作格式为 `
4 k`,意味着查询当前排名为 $k$ 的用户编号,执行完该操作后需要输出当前操作用户的编号。但同时为了防止别人监听自己的工作,方伯伯对他的操作进行了加密,即将四种操作的格式分别改为了:
```plain
1 x+a y+a
2 x+a
3 x+a
4 k+a
```
其中 $a$ 为上一次操作得到的输出,一开始 $a=0$。
例如:
上一次操作得到的输出是 `
5`, 这一次操作的输入为:`
1 13 15`, 因为这个输入是经过加密后的,所以你应该处理的操作是`
1 8 10`。现在你截获了方伯伯的所有操作,希望你能给出结果。
输入格式
输入的第一行包含两个用空格分隔的整数 $n$ 和 $m$,表示初始用户数和操作数。
此后有 $m$ 行,每行是一个询问,询问格式如上所示。
此后有 $m$ 行,每行是一个询问,询问格式如上所示。
输出格式
输出包含 $m$ 行。每行包含一个整数,其中第 $i$ 行的整数表示第 $i$ 个操作的输出。
输入输出样例
输入 #1
10 10 1 2 11 3 13 2 5 3 7 2 8 2 10 2 11 3 14 2 18 4 9
输出 #1
2 2 2 4 3 5 5 7 8 11
对于 $100 \%$ 的数据,$1 \leq n \leq 10^8,\ 1 \leq m \leq 10^5$。
输入保证对于所有的操作, $x$ 必然已经出现在队列中,同时对于所有操作 `
对于所有操作 `
输入保证对于所有的操作, $x$ 必然已经出现在队列中,同时对于所有操作 `
1`,$1 \leq y \leq 2 \times 10^8$,并且 $y$ 没有出现在队列中。 对于所有操作 `
4`,保证 $1 \leq k \leq n$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?