思路貌似和大家都差不多
#include<iostream>
#include<deque>
using namespace std;
int n, m, status[50004], a, l, r;
char msg;
deque<int>DESTROY;
int main()
{
cin >> n >> m;
for (int i = 1; i <= m; i += 1)
{
cin >> msg;
if (msg == 'R')
{
status[DESTROY.back()] = 0;
DESTROY.pop_back();
}
else if (msg == 'D')
{
cin >> a;
status[a] = 1;
DESTROY.push_back(a);
}
else if (msg == 'Q')
{
cin >> a;
l = 0;
r = n + 1;
for (auto it = DESTROY.begin(); it != DESTROY.end(); it += 1)
{
if (*it <= a) l = max(*it, l);
else if (*it >= a) r = min(*it, r);
}
printf("%d\n",l == r ? 0 : r - l - 1);
}
}
}