#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=2e5+10;
int m,p;
int a[maxn];
int len;
int qz;
struct segment_tree{
struct Node{
int l,r;
int sum;
}tr[maxn*4];
void build(int p,int l,int r){
tr[p]={l,r,0};
if(l==r) return ;
int mid=r+l>>1;
build(p<<1,l,mid);
build(p<<1|1,mid+1,r);
}
int check(int p,int l,int r){
if(tr[p].l>r||tr[p].r<l) return 0;
if(tr[p].l>=l&&tr[p].r<=r){
return tr[p].sum;
}
int s=0;
s=max(s,check(p<<1,l,r));
s=max(s,check(p<<1|1,l,r));
return s;
}
void modify(int u, int x, int v){
if (tr[u].l == x && tr[u].r == x) tr[u].sum = v;
else
{
int mid = tr[u].l + tr[u].r >> 1;
modify(u << 1, x, v);
else modify(u << 1 | 1, x, v);
tr[u].sum=max(tr[u<<1].sum,tr[u<<1|1].sum);
}
}
}ST;
signed main(){
scanf("%lld %lld",&m,&p);
ST.build(1,1,m);
while(m--){
char zf,x;
scanf("%s%lld",&zf,&x);
if(zf=='A'){
ST.modify(1,len+1,((int)qz+x)%p);
len++;
}
else{
qz=ST.check(1,len-x+1,len);
if(x==0) qz=0;
printf("%lld\n",qz);
}
}
}
为啥全wa了,求调