37分求助
查看原帖
37分求助
855093
0x00AC3375楼主2023/9/3 01:10

思路貌似和大家都差不多

#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);
		}
	}
}
2023/9/3 01:10
加载中...