思路哪里错了
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct node
{
ll l,r,sum;
}tree[400005];
ll m,d;
int lass,lest;
void build(ll p,ll l,ll r)
{
tree[p].l=l;tree[p].r=r;tree[p].sum=0;
if(l==r)return ;
build(p<<1,l,(l+r)>>1);
build((p<<1)+1,((l+r)>>1)+1,r);
}
void modify(ll p,ll a,ll b)
{
if(tree[p].l>a||tree[p].r<a)return;
if(tree[p].l==a&&tree[p].r==a)
{
tree[p].sum=b;
return;
}
modify(p<<1,a,b);
modify((p<<1)+1,a,b);
tree[p].sum=max(tree[p<<1].sum,tree[(p<<1)+1].sum);
}
ll query(ll p,ll l,ll r)
{
if(tree[p].l>r||tree[p].r<l)return 0;
if(tree[p].l>=l&&tree[p].r<=r)
return tree[p].sum;
return max(query(p<<1,l,r),query((p<<1)+1,l,r));
}
int main()
{
ll k,b;
int num=0;
char a;
scanf("%lld%lld",&m,&d);
build(1,0,100000);
while(m--)
{
scanf("%c%lld",&a,&b);
if(a=='A')
{
b=(b+lest)%d;
modify(1,++lass,b);
}
else
{
lest=query(1,lass-b,lass);
printf("%lld\n",lest);
}
}
}