增加标签 ST表。
ST 表做这题真的事半功倍啊。
附代码
#include<bits/stdc++.h>
using namespace std;
int len;
long long M,D;
long long t=0;
long long st[200010][25];
void Insert(long long q){
int lg=log2(1+len);
st[len][0]=q;
for(int i=1;i<=lg;i++){
st[len-(1<<i)+1][i]=max(st[len-(1<<i)+1][i-1],st[len-(1<<(i-1))+1][i-1]);
}
return;
}
long long find(int l,int r){
int lg=log2(r-l+1);
long long ans=max(st[l][lg],st[r-(1<<lg)+1][lg]);
return ans;
}
int main(){
scanf("%lld%lld",&M,&D);
while(M--){
char op;
scanf(" %c",&op);
if(op=='Q'){
int L;
scanf("%d",&L);
t=find(len-L+1,len);
printf("%lld\n",t);
}
else{
long long n;
scanf("%lld",&n);
long long q=(n+t)%D;
++len;
Insert(q);
}
}
return 0;
}
总行数 40,长度 733
@离散小波变换° @Maxmilite