题目大意:维护一个数列,要求在左边插入一个数,在右边插入一个数,查询一个数的排名
题解:可以双指针,开个数组存每个数的位置
卡点:无
C++ Code:
#include <cstdio>
#define maxn 200010
int n, l, r = 1;
int ret[maxn];
inline int min(int a, int b) {return a < b ? a : b;}
int main() {
scanf("%d", &n);
while (n --> 0) {
char ch;
int x;
scanf("%1s%d", &ch, &x);
switch (ch) {
case 'L':
ret[x] = l--;
break;
case 'R':
ret[x] = r++;
break;
case '?':
printf("%d\n", min(ret[x] - l, r - ret[x]) - 1);
}
}
return 0;
}