比赛 2026.8.26 评测结果 AAWWWWWWWWWWWWWWWWWW
题目名称 interval 最终得分 10
用户昵称 exil 运行时间 6.541 s
代码语言 C++ 内存使用 42.42 MiB
提交时间 2026-08-26 11:48:58
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define int long long
int a[250005],b[250005];
int c[250005];
struct node{
	int l;
	int r;
	int sum0,sum1,sum2,sumx;
};
node tp[4000005];
node shu[4000005];
void jianshu(int k,int l,int r){
	tp[k]=(node){l,r,0,0};
	if(l==r){
	    if(a[l]==0)tp[k].sum0=1;
	    else if(a[l]==1)tp[k].sum1=1;
	    else if(a[l]==2)tp[k].sum2=1;
	    else tp[k].sumx=1;
		return;
	}
	int mid=(l+r)/2;
	jianshu(k<<1,l,mid);
	jianshu(k<<1|1,mid+1,r);
	tp[k].sum0=tp[k<<1].sum0+tp[k<<1|1].sum0;
	tp[k].sum1=tp[k<<1].sum1+tp[k<<1|1].sum1;
	tp[k].sum2=tp[k<<1].sum2+tp[k<<1|1].sum2;
	tp[k].sumx=tp[k<<1].sumx+tp[k<<1|1].sumx;
}
void jianshu2(int k,int l,int r){
	shu[k]=(node){l,r,0,0};
	if(l==r){
	    if(b[l]==0)shu[k].sum0=1;
	    else if(b[l]==1)shu[k].sum1=1;
	    else if(b[l]==2)shu[k].sum2=1;
	    else shu[k].sumx=1;
		return;
	}
	int mid=(l+r)/2;
	jianshu2(k<<1,l,mid);
	jianshu2(k<<1|1,mid+1,r);
	shu[k].sum0=shu[k<<1].sum0+shu[k<<1|1].sum0;
	shu[k].sum1=shu[k<<1].sum1+shu[k<<1|1].sum1;
	shu[k].sum2=shu[k<<1].sum2+shu[k<<1|1].sum2;
	shu[k].sumx=shu[k<<1].sumx+shu[k<<1|1].sumx;
}
int cha0(int k,int l,int r){
	if(tp[k].l>r || tp[k].r<l)return 0;
	
	if(tp[k].l>=l && tp[k].r<=r){
		return tp[k].sum0;
	}
	return cha0(k<<1,l,r)+cha0(k<<1|1,l,r);
}
int cha1(int k,int l,int r){
	if(tp[k].l>r || tp[k].r<l)return 0;
	
	if(tp[k].l>=l && tp[k].r<=r){
		return tp[k].sum1;
	}
	return cha1(k<<1,l,r)+cha1(k<<1|1,l,r);
}
int cha2(int k,int l,int r){
	if(tp[k].l>r || tp[k].r<l)return 0;
	
	if(tp[k].l>=l && tp[k].r<=r){
		return tp[k].sum2;
	}
	return cha2(k<<1,l,r)+cha2(k<<1|1,l,r);
}
int chax(int k,int l,int r){
	if(tp[k].l>r || tp[k].r<l)return 0;
	
	if(tp[k].l>=l && tp[k].r<=r){
		return tp[k].sumx;
	}
	return chax(k<<1,l,r)+chax(k<<1|1,l,r);
}
int echa0(int k,int l,int r){
	if(shu[k].l>r || shu[k].r<l)return 0;
	
	if(shu[k].l>=l && shu[k].r<=r){
		return shu[k].sum0;
	}
	return echa0(k<<1,l,r)+echa0(k<<1|1,l,r);
}
int echa1(int k,int l,int r){
	if(shu[k].l>r || shu[k].r<l)return 0;
	
	if(shu[k].l>=l && shu[k].r<=r){
		return shu[k].sum1;
	}
	return echa1(k<<1,l,r)+echa1(k<<1|1,l,r);
}
int echa2(int k,int l,int r){
	if(shu[k].l>r || shu[k].r<l)return 0;
	
	if(shu[k].l>=l && shu[k].r<=r){
		return shu[k].sum2;
	}
	return echa2(k<<1,l,r)+echa2(k<<1|1,l,r);
}
signed main(){
    freopen("intervallavretni.in","r",stdin);
    freopen("intervallavretni.out","w",stdout); 
    
    
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n,q;
    cin>>n>>q;
    for(int i = 1;i<=n;i++){
        cin>>a[i]>>b[i];
    }
    
    
    
    if(n<=100 && q<=100){
        
        for(int i = 1;i<=q;i++){
            int l,r1;
            cin>>l>>r1;
            l++;
            r1++;
            for(int j = l;j<=r1;j++){
                c[j]=a[j];
            }
            int e=0;
            int q=0;
            while(e==0){
                e=1;
                int w=0;
                for(int j = l;j<=r1;j++){
                    if(c[j]<b[j]){
                        int pan=0;
                        for(int k = l;k<=r1;k++){
                            
                            if(k==j)continue;
                            
                            if(c[j]==c[k]){
                                w=1;
                                pan=1;
                                break;
                            }
                        }
                        if(pan==1){
                            c[j]++;
                        }
                        
                    }
                    if(c[j]!=b[j])e=0;
                }
                if(e==1){
//                    for(int j = l;j<=r1;j++){
//                        cout<<c[j]<<" ";
//                    }
//                    cout<<endl;
                    break;
                }
                if(w==0){
                    q=1;
                    cout<<0<<" ";
                    break;
                }
                
            }
            if(q==0)cout<<1<<" ";
            
            
            
        }
        return 0;
        
    }
    else{
        jianshu(1,1,n);
        jianshu2(1,1,n);
        for(int i = 1;i<=q;i++){
            int l,r;
            cin>>l>>r;
            if(chax(1,l,r)!=0)cout<<0<<" ";
            else{
                if((cha0(1,l,r)!=0 && echa0(1,l,r)==0) || (cha0(1,l,r)==0 && echa0(1,l,r)!=0))cout<<0<<" ";
                else if((cha1(1,l,r)!=0 && echa1(1,l,r)==0) || (cha1(1,l,r)==0 && echa1(1,l,r)!=0))cout<<0<<" ";
                else if((cha2(1,l,r)!=0 && echa2(1,l,r)==0) || (cha2(1,l,r)==0 && echa2(1,l,r)!=0))cout<<0<<" ";
                else{
                    if(cha0(1,l,r)<echa0(1,l,r))cout<<0<<" ";
                    else{
                        int yi=0;
                        if(cha0(1,l,r)>echa0(1,l,r)){
                            yi+=cha0(1,l,r)-echa0(1,l,r);
                        }
                        
                        
                        
                        if(cha1(1,l,r)+yi<echa1(1,l,r))cout<<"0"<<" ";
                        else{
                            int er=0;
                            if(cha1(1,l,r)+yi>echa1(1,l,r)){
                                er+=cha1(1,l,r)+yi-echa1(1,l,r);
                            }
                            
                            if(cha2(1,l,r)+er!=echa2(1,l,r))cout<<"0"<<" ";
                            else cout<<"1"<<" ";
                            
                        }
                        
                    }
                    
                    
                    
                    
                    
                    
                    
                    
                    
                }
                
                
                
                
            }
        }
        
        
        
    }
    
    
    return 0;
}