Runtime Error.
Received signal 11: Segmentation fault with invalid memory reference.
上面的啥意思?下面是代码(有点像校门外的树),是一道团队比塞题,全RE求助
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+5;
int n,m,ans;
struct node{
int l,r,tag;
}tree[N<<2];
inline int lc(int x){
return x<<1;
}
inline int rc(int x){
return x<<1|1;
}
void build(int x,int l,int r){
tree[x].l=l;tree[x].r=r;tree[x].tag=1;
if(l==r)return ;
int mid=(l+r)/2;
build(lc(x),l,mid);
build(rc(x),mid+1,r);
}
void cut(int x,int l,int r){
int mid=(tree[x].l+tree[x].r)/2;
if(tree[x].tag!=1||tree[x].tag!=-1){
tree[lc(x)].tag=tree[rc(x)].tag=tree[x].tag;
}
if(tree[x].l==l&&tree[x].r==r){
if(tree[x].tag==0)return;
else if(tree[x].tag==-1){
tree[x].tag=0;
cut(lc(x),l,(l+r)>>1);
cut(rc(x),(l+r>>1)+1,r);
}else {
tree[x].tag=0;
ans+=(tree[x].r-tree[x].l)+1;
}
}else{
if(r<=mid) cut(lc(x),l,r);
else if(l>mid) cut(rc(x),l,r);
else{
cut(lc(x),l,mid);
cut(rc(x),mid+1,r);
}
if(tree[lc(x)].tag==tree[rc(x)].tag) tree[x].tag=tree[lc(x)].tag;
else tree[x].tag=-1;
}
}
void plant(int x,int l,int r){
int mid=(tree[x].l+tree[x].r)/2;
if(tree[x].tag!=1||tree[x].tag!=-1){
tree[lc(x)].tag=tree[rc(x)].tag=tree[x].tag;
}
if(tree[x].l==l&&tree[x].r==r){
if(tree[x].tag>=1)return;
else if(tree[x].tag==0){
tree[x].tag=2;
}
else{
plant(lc(x),l,(l+r)>>1);
plant(rc(x),(l+r>>1)+1,r);
}
}else{
if(r<=mid) plant(lc(x),l,r);
else if(l>mid) plant(rc(x),l,r);
else{
plant(lc(x),l,mid);
plant(rc(x),mid+1,r);
}
if(tree[lc(x)].tag==tree[rc(x)].tag) tree[x].tag=tree[lc(x)].tag;
else tree[x].tag=-1;
}
}
signed main(){
int op,x,y,k;
scanf("%lld%lld",&n,&m);
build(1,1,n);
while(m--){
scanf("%lld%lld%lld",&op,&x,&y);
if(x>y)swap(x,y);
if(op==1)cut(1,x,y);
else plant(1,x,y);
}
printf("%lld",ans);
return 0;
}