#include<cstdio>
typedef long long ll;
const ll ninf=-(1<<62);
int m,cnt;
char op[2];
ll data[800005],x,t,p;
ll max(ll a,ll b){
return a>b?a:b;
}
void add(int s,int k,int o, int l,int r){
if(l==r){
data[o]=k;
}else{
int mid=(l+r)>>1;
if(mid>=s)add(s,k,o<<1,l,mid);
if(mid<s )add(s,k,o<<1|1,mid+1,r);
data[o]=max(data[o<<1],data[o<<1|1])%p;
}
}
ll query(int ll,int rr,int o,int l,int r){
if(ll<=l && rr>=r)return data[o];
int mid=(l+r)>>1;
ll a=ninf;
ll b=ninf;
if(mid>=ll)a=query(ll,rr,o<<1,l,mid);
if(mid<rr)b=query(ll,rr,o<<1|1,mid+1,r);
return max(a,b);
}
int main(){
scanf("%d %lld",&m,&p);
for(int i=0;i<m;i++){
scanf("%s %lld",op,&x);
switch(op[0]){
case('A'):{
add(cnt+1,(x+t)%p,1,1,m);
break;
}case('Q'):{
if(x==0)t=0;
else t=query(cnt-x+1,cnt,1,1,m);}
}
}
return 0;
}
请看query函数及文件前5行,编译显示“语句不起作用”和“Expected;before a”是什么情况?