3033 - 【入门】双端队列

题目描述

给定一个双端队列,初始时队列为空。

你要对其进行 q 次操作,每次操作可能是以下三种之一:

  1. L\space x,从队列的左端插入整数 x
  2. R \space x,从队列的右端插入整数 x
  3. ? \space x,请你计算为了使已经处于队列中的整数 x 位于队列的最左端或最右端,至少需要从最左端或最右端弹出多少个数字。保证操作 3 一定合法(? \space x 中的 x 一定已经处于队列之中)。

每个数字最多被插入到队列中 1 次(队列中一定不会存在重复数字)。

注意,操作 3 只是询问最少需要弹出多少数字,不是真的要弹出它们,队列中的数字始终不会减少。

输入

第一行包含整数 q

接下来 q 行,每行包含一个操作信息,格式如题所述。

输出

对于每个操作 3,输出一行,一个整数表示结果。

样例

输入

8
L 1
R 2
R 3
? 2
L 4
? 1
L 5
? 1

输出

1
1
2

输入

10
L 100
R 100000
R 123
L 101
? 123
L 10
R 115
? 100
R 110
? 115

输出

0
2
1
说明

对于 30\% 的数据,1≤q≤30,1≤x≤30

对于 100\% 的数据,1≤q≤2\times 10^5,1≤x≤2\times 10^5

保证至少包含一个操作 3

保证操作 12 不会重复插入数字。

保证操作 3 不会询问队列中不存在的数字。

题目参数
时间限制 1 秒
内存限制 128 MB
提交次数 6
通过人数 5
金币数量 1 枚
统计
上一题 下一题