比赛 2026.9.12 评测结果 AAAAAAAAAA
题目名称 画线 最终得分 100
用户昵称 zcx 运行时间 2.904 s
代码语言 C++ 内存使用 61.33 MiB
提交时间 2026-09-12 10:10:19
显示代码纯文本
#include<bits/stdc++.h>
#define lson num * 2
#define rson num * 2 + 1
#define int long long
using namespace std;

const int N = 1e6 + 5;
const int INF = 1e16 + 1145;

int n,q;

struct tree{
    int l,r,val;
} tl[4 * N],tr[4 * N];

void build(int num,int L,int R){
    tl[num].l = L;tl[num].r = R;tl[num].val = -INF;
    tr[num].l = L;tr[num].r = R;tr[num].val = INF;
    if(L == R) return ;
    int M = (L + R)>>1;
    build(lson,L,M);build(rson,M + 1, R); 
}

void add1(int num,int x,int k){
    tl[num].val = max(tl[num].val,k);
    if(tl[num].l == tl[num].r) return;
    if(x <= tl[lson].r) add1(lson,x,k);
    else add1(rson,x,k);
}

void add2(int num,int x,int k){
    tr[num].val = min(tr[num].val,k);
    if(tr[num].l == tr[num].r) return;
    if(x <= tr[lson].r) add2(lson,x,k);
    else add2(rson,x,k);
}

int ask1(int num,int x,int y){
    if(tl[num].l >= x && tl[num].r <= y) return tl[num].val;
    int maxn = -INF;
    if(x <= tl[lson].r) maxn = max(maxn,ask1(lson,x,y));
    if(y > tl[lson].r) maxn = max(maxn,ask1(rson,x,y));
    return maxn;
}

int ask2(int num,int x,int y){
    if(tr[num].l >= x && tr[num].r <= y) return tr[num].val;
    int minn = INF;
    if(x <= tr[lson].r) minn = min(minn,ask2(lson,x,y));
    if(y > tr[lson].r) minn = min(minn,ask2(rson,x,y));
    return minn;
}

signed main()
{
    freopen("circle.in","r",stdin);
    freopen("circle.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>n>>q;
    build(1,1,n);
    while(q--){
        int x,y;cin>>x>>y;
        if(x > y) swap(x,y);
        int fl1 = ask1(1,x,y),fl2 = ask2(1,x,y);
        if(fl1 < y && fl2 > x ) {
            cout<<"Yes\n";
            add1(1,x,y);
            add2(1,y,x);
        }else cout<<"No\n";
    }
    
    
    return 0;
}