巧妙的思路 (x
不记录真实的队列,而是以 $pos[x]$ 表示 $x$ 的位置,以 $l,r$ 的维护计算距离。
yls nb!
/*
* AcWing 3548, warm-up contest 1 C
* Author: Wu Wenhao
* Date: 2021/5/23
*/
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n, pos[200050];
int main() {
int l = 0, r = -1;
cin >> n;
for (int i = 1; i <= n; i++) {
char op; int x;
cin >> op >> x;
if (op == 'L') pos[x] = --l;
else if (op == 'R') pos[x] = ++r;
else cout << min(pos[x] - l, r - pos[x]) << "\n";
}
return 0;
}