最后一个点才1.11ms,建议加强数据。不然哪位卡常高手等一下就过了。。。
#include<bits/stdc++.h>
using namespace std;
int n,m,x,cnt;
char c;
bool vis[50005],flag=1;
int t[50005];
int read(){
char c=getchar();
int num=0;
while(c<48||c>57) c=getchar();
while(c>=48&&c<=57){
num=(num<<1)+(num<<3)+c-48;
c=getchar();
}
return num;
}
void print(int num){
if(num){
print(num/10);
putchar(num%10+48);
}
}
int main(){
n=read();m=read();
for(register int i=1;i<=n;i++){vis[i]=1;}
while(m--){
c=getchar();
while((c^68)&&(c^82)&&(c^81)) c=getchar();
if(!(c^68)){
x=read();
vis[x]=0;
t[++cnt]=x;
flag=0;
}else if(!(c^82)){
vis[t[cnt]]=1;
cnt--;
if(!cnt) flag=1;
}else{
x=read();
if(flag){
print(n);
putchar(10);
continue;
}
if(!vis[x]){
putchar(48);
putchar(10);
continue;
}
int s=0;
int t=x;
while(t>=1&&vis[t]){t--;s++;}
t=x+1;
while(t<=n&&vis[t]){t++;s++;}
print(s);
putchar(10);
}
}
return 0;
}