rt,请各位大佬解释一下代码为什么错了。
#include <bits/stdc++.h>
#define int long long
#define maxm 15000005
#define maxn 1005
#define inf 0x3f3f3f3f3f3f
using namespace std;
int n,m,cnt,Xor;
int a[maxm],ver[maxm];
struct Trie{
int ch[2];
int sz;
}t[maxm];
void Insert(int k,int &rt,int x){
rt=++cnt;
int root=rt;
for(int i=5;i>=0;i--){
int y=(x>>i)&1;
t[root].ch[y^1]=t[k].ch[y^1];
t[root].ch[y]=++cnt;
t[root].sz=t[k].sz+1;
root=t[root].ch[y],k=t[k].ch[y];
}
//cout<<"-------------------------------------------------------------\n";
}
int Ask(int l,int r,int x){
int sum=0;
for(int i=5;i>=0;i--){
int y=(x>>i)&1;
//cout<<i<<" "<<y<<": \n";
//cout<<l<<" "<<r<<" "<<sum<<"\n";
//cout<<t[t[r].ch[y^1]].sz<<" "<<t[t[l].ch[y^1]].sz<<"\n";
if(t[t[r].ch[y^1]].sz-t[t[l].ch[y^1]].sz>0){
sum+=(1<<i);
l=t[l].ch[y^1],r=t[r].ch[y^1];
}
else l=t[l].ch[y],r=t[r].ch[y];
}
return sum;
}
int Check(int k){
int sum=0,x=5;
while(k){
if(t[k].ch[0])k=t[k].ch[0];
else if(t[k].ch[1])k=t[k].ch[1],sum+=1<<x;
else return sum;
x--;
}
}
signed main(){
// ios::sync_with_stdio(0);
// cin.tie(0);
// cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
a[i]^=a[i-1];
// cout<<a[i]<<" ";
}
// cout<<"\n";
for(int i=1;i<=n;i++)Insert(ver[i-1],ver[i],a[i]);
//for(int i=1;i<=n;i++)cout<<Check(ver[i])<<" ";
//cout<<"\n";
for(int i=1;i<=m;i++){
char op;
int x,y,z;
cin>>op>>x;
if(op=='A'){
n++;
a[n]=a[n-1]^x;
Insert(ver[n-1],ver[n],a[n]);
}
else{
cin>>y>>z;
//cout<<z<<" "<<Xor<<" ";
z^=a[n];
//cout<<z<<"\n";
//cout<<Ask(ver[4],ver[5],z)<<"\n";
//for(int i=x-2;i<=y-1;i++)cout<<Check(ver[i])<<" ";
//cout<<"\n";
cout<<Ask(ver[max(0ll,x-2)],ver[y-1],z)<<"\n";
}
//for(int i=1;i<=50;i++)cout<<i<<" "<<t[i].ch[0]<<" "<<t[i].ch[1]<<" "<<t[i].sz<<"\n";
}
return 0;
}