Comments
#include<bits/stdc++.h>
using namespace std;
int a[4000010],tag[4000010],n,t,p,q;
void pushdown(int rt){
    if(tag[rt]!=0){
        a[rt]=tag[rt];
        tag[rt*2]=tag[rt];tag[rt*2+1]=tag[rt];
        tag[rt]=0;
    }
    return ;
}
int query(int rt,int l,int r,int x){
    pushdown(rt);
    if(l==r){
        return a[rt];
    }
    int mid=(l+r)/2;
    if(x<=mid){
        return query(rt*2,l,mid,x);
    }else{
        return query(rt*2+1,mid+1,r,x);
    }
}
void update(int rt,int l,int r,int L,int R,int v){
    pushdown(rt);
    if(L<=l && r<=R){
        a[rt]=v;tag[rt]=v;
        return ;
    }
    int mid=(l+r)/2;
    if(L<=mid){
        update(rt*2,l,mid,L,R,v);
    }if(R>mid){
        update(rt*2+1,mid+1,r,L,R,v);
    }
    return ;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n>>t;
    for(int i=1;i<=t;i++){
        cin>>p>>q;
        //cout<<query(1,1,n,l)<<" "<<query(1,1,n,r)<<'\n';
        if(query(1,1,n,p)!=query(1,1,n,q)){
            cout<<"No\n";
        }else{
            cout<<"Yes\n";
            update(1,1,n,p,q,i);
        }
    }
    return 0;
}

Fwhy is it wrong?