#include<bits/stdc++.h> #define mp make_pair #define pb push_back using namespace std; typedef long long LL; typedef pair<int,int> PII; const int M=200008; int m,d,a; char c[1]; int len,t; int tree[M<<2]; inline void update(int x,int l,int r) { if(l==len&&r==len){ tree[x]=a; return; } int mid=(l+r)>>1; if(len<=mid) update(x<<1,l,mid); else update(x<<1|1,mid+1,r); tree[x]=max(tree[x<<1],tree[x<<1|1]); } inline int query(int x,int l,int r) { if(len-a+1<=l&&r<=len){ return tree[x]; } int mid=(l+r)>>1; if(len<=mid) return query(x<<1,l,mid); if(len-a+1>mid) return query(x<<1|1,mid+1,r); return max(query(x<<1,l,mid),query(x<<1|1,mid+1,r)); } int main() { scanf("%d%d",&m,&d); for(int i=1;i<=m;++i){ scanf("%s%d",c,&a); if(c[0]=='A'){ a=(0ll+a+t)%d; ++len; update(1,1,m); } else{ if(a){ printf("%dn",t=query(1,1,m)); } else{ puts("0"); } } } return 0; }
|
近期评论