开一个容器进行模拟即可,注意容器设置初始大小不然容易re。设置两个指针l,r。把容器当作桶,每一个桶都有一个编号表示位置,左边进入那么就是编号为l,右边一样。然后l--或者r++,l=r=0的初始值,第一个元素为0,然后同时l--,r++

代码(cf上题解的算法)

#include <bits/stdc++.h>
using namespace std;
main()
{
	int n;
	cin>>n;
	deque<int> vec(300000);
	int l=0;int r=0;
	for(int i=0;i<n;i++)
	{
		string s;
		int id;
		cin>>s>>id;
		if(!i)
		{
			vec[id]=l;
			l--,r++;
		}
		else
		{
			if(s=="L")
			{
				vec[id]=l;
				l--;
			}
			if(s=="R")
			{
				vec[id]=r;
				r++;
			}
			if(s=="?")
			cout<<min(abs(vec[id]-l),abs(vec[id]-r))-1<<endl; 
		}
	}
}

相关文章:

  • 2021-12-25
  • 2021-12-29
  • 2021-07-10
  • 2021-09-24
  • 2021-08-16
  • 2019-10-28
  • 2021-11-02
  • 2021-07-17
猜你喜欢
  • 2021-04-05
  • 2022-01-07
  • 2021-04-23
  • 2021-06-18
  • 2022-12-23
  • 2019-10-27
  • 2022-12-23
相关资源
相似解决方案