#include<bits/stdc++.h>
#define N 200005
using namespace std;
#define int long long
int n,m,i,j,ans,now;
int len,d[N<<2];
char id;
int x;
void build(int s,int t,int l,int r,int p){
d[p]=max(d[p],s);
if(l==r) return;
int m=(l+r)>>1;
if(t>=l && t<=m) build(s,t,l,m,p<<1);
if(t>=m+1 && t<=r) build(s,t,m+1,r,(p<<1)+1);
}
int getans(int s,int t,int l,int r,int p){
if(l>=s && r<=t) return d[p];
int m=(l+r)>>1,sum=-1e18;
if(s<=m) sum=max(sum,getans(s,t,l,m,p<<1));
if(t>m) sum=max(sum,getans(s,t,m+1,r,(p<<1)+1));
return sum;
}
signed main(){
scanf("%lld%lld",&n,&m);
for(i=1;i<=n;i++){
cin>>id>>x;
if(id=='A'){
len++;
build((x+now)%m,len,1,len,1);
}
else{
now=getans(len-x+1,len,1,len,1);
printf("%lld\n",now);
}
}
return 0;
}
我的思路就是每次要插入一个新的数就看看哪些节点包含这个区间,然后更新,复杂度是 O(nlogn) 的,但是全部WA了,大佬求调