Books Queries (codeforces 1066C)

模拟题

开一个容器进行模拟即可,注意容器设置初始大小不然容易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; 
		}
	}
}
posted @ 2018-10-13 13:44  baccano!  阅读(246)  评论(0编辑  收藏  举报