题目传送门
题目:
这题并不难,下面代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1e6+10;
int l=200000,r=l-1,t,q;
int pos[maxn];
int main() {
char s;
cin>>q;
while(q--) {
cin>>s>>t;
if(s=='L') l--,pos[t]=l;
else if(s=='R') r++,pos[t]=r;
else if(s=='?') cout<<min(pos[t]-l,r-pos[t])<<endl;
}
}
/*
const int maxn=1000+10;
int arr[maxn];
int vis[maxn];
int main() {
int n,len;
cin>>n>>len;
int ans=0;
int flag=0;
for(int i=1; i<=n; i++) {
cin>>arr[i];
if(!arr[i]) continue;
ans++;
int l=(i-len+1)<1?1:(i-len+1);
int r=(i+len-1)>n?n:(i+len-1);
//cout<<l<<" "<<r<<endl;
vis[l]++;
vis[r+1]--;
}
for(int i=1; i<=n; i++) {
vis[i]+=vis[i-1];
}
// for(int i=1; i<=n; i++)
// cout<<vis[i]<<" ";
//cout<<endl;
for(int i=1; i<=n; i++) {
if(!vis[i]) {
cout<<-1;
return 0;
}
}
for(int i=1; i<=n; i++) {
int l=(i-len+1)>=1?(i-len+1):1;
int r=(i+len-1)>n?n:(i+len-1);
if(vis[l]>=2&&vis[r]>=2) {
int flag=0;
for(int j=l+1; j<=r-1; j++) {
if(vis[j]<2)
flag=1;
}
if(!flag) {
//cout<<l<<" "<<r<<endl;
ans--;
for(int j=l; j<=r; j++)
vis[j]--;
}
}
}
cout<<ans<<endl;
}
*/
/*
int main()
{
int t;
cin>>t;
while(t--)
{
int L,v,l,r;
cin>>L>>v>>l>>r;
int ans=0;
ans=((l-1)/v)+((L/v-(r/v)));
cout<<ans<<endl;
}
return 0;
}
*/