分析:单调队列模板题,用来统计前k个或后k个数中的最大值。
#include<bits/stdc++.h>
using namespace std;
int a[200005],ans[200005];
char q[1];
int main()
{
char c;
int M,D,cnt=0,lst=0,v;
scanf("%d%d", &M, &D);
while (M--)
{
scanf("%s%d",q,&v);
if(q[0]=='A')
{
a[++cnt]=(lst+v)%D;
for(int i=cnt;i;i--)
if(ans[i]<a[cnt]) ans[i]=a[cnt];
else break;
}
else
printf("%d\n",lst=ans[cnt-v+1]);
}
return 0;
}