本地是好的,交上去或者用洛谷ide就显示编译失败,但也没有报错信息,求大佬帮忙看看
#include<bits/stdc++.h>
using namespace std;
const int MAXN=500010;
int n,m,a[MAXN];
struct Tree{
int num=1;
}t[MAXN<<2];
void Pushup(int pos){
t[pos].num=t[pos<<1].num*t[pos<<1|1].num%m;
return;
}
void build(int pos,int l,int r){
if(l==r){
t[pos].num=1;
return;
}
int mid=(l+r)>>1;
build(pos<<1,l,mid);
build(pos<<1|1,mid+1,r);
Pushup(pos);
return;
}
int query(int pos,int l,int r,int ql,int qr){
if(ql<=l&&qr>=r){
return t[pos].num;
}
int res=1,mid=(l+r)>>1;
if(ql<=mid)res*=query(pos<<1,l,mid,ql,qr);
if(qr>mid)res*=query(pos<<1|1,mid+1,r,ql,qr);
return res;
}
void Update(int pos,int l,int r,int x,int k){
//cout<<pos<<" "<<l<<" "<<r<<" "<<x<<" "<<k<<" "<<t[pos].num<<endl;
if(l==r){
t[pos].num=k;
return;
}
int mid=(l+r)>>1;
if(x<=mid)Update(pos<<1,l,mid,x,k);
else Update(pos<<1|1,mid+1,r,x,k);
Pushup(pos);
return;
}
int t1,cnt;
signed main(){
//build(1,1,n);
scanf("%d",&t1);
while(t1--){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
int tmp;
cin>>tmp;
int x;
scanf("%d",&x);
if(tmp==1){
a[++cnt]=x;
Update(1,1,n,i,x);
printf("%d\n",t[1].num%m);
}
else {
for(int j=1;j<=cnt;j++){
//cout<<j<<":"<<a[j]<<" ";
}
//cout<<endl;
Update(1,1,n,x,1);
printf("%d\n",t[1].num%m);
}
}
}
return 0;
}
~~~