5591: 双端队列
[Creator : ]
Description
双端队列和标准队列相比,双端队列的头部和尾部都可以插入、删除的队列。
给定一个双端队列,初始时队列为空。
你要对其进行 $q$ 次操作,每次操作可能是以下三种之一:
每个数字最多被插入到队列中 $1$ 次(队列中一定不会存在重复数字)。
注意,操作 $3$ 只是询问最少需要弹出多少数字,不是真的要弹出它们,队列中的数字始终不会减少。
给定一个双端队列,初始时队列为空。
你要对其进行 $q$ 次操作,每次操作可能是以下三种之一:
- L x,从队列的左端插入整数 $x$。
- R x,从队列的右端插入整数 $x$。
- ? x,请你计算为了使已经处于队列中的整数 $x$ 位于队列的最左端或最右端,至少需要从最左端或最右端弹出多少个数字。
每个数字最多被插入到队列中 $1$ 次(队列中一定不会存在重复数字)。
注意,操作 $3$ 只是询问最少需要弹出多少数字,不是真的要弹出它们,队列中的数字始终不会减少。
Input
第一行包含整数 $q$。
接下来 $q$ 行,每行包含一个操作信息,格式如题所述。
接下来 $q$ 行,每行包含一个操作信息,格式如题所述。
Output
对于每个操作 $3$,输出一行,一个整数表示结果。
Constraints
对于 $30\%$ 的数据,$1≤q≤30,\ 1≤x≤30$。
对于 $100\%$ 的数据,$1≤q≤2×10^5,\ 1≤x≤2×10^5$。
保证至少包含一个操作 $3$,
保证操作 $1$ 和 $2$ 不会重复插入数字。
保证操作 33 不会询问队列中不存在的数字。
对于 $100\%$ 的数据,$1≤q≤2×10^5,\ 1≤x≤2×10^5$。
保证至少包含一个操作 $3$,
保证操作 $1$ 和 $2$ 不会重复插入数字。
保证操作 33 不会询问队列中不存在的数字。
Sample 1 Input
8
L 1
R 2
R 3
? 2
L 4
? 1
L 5
? 1
Sample 1 Output
1
1
2
Sample 2 Input
10
L 100
R 100000
R 123
L 101
? 123
L 10
R 115
? 100
R 110
? 115
Sample 2 Output
0
2
1