题解 | 【模板】整数域二分

【模板】整数域二分

https://www.nowcoder.com/practice/d483ab6bf19245518730a75c6ea108ae

二分一下就行了

void solve(){
    int n,q;
    cin>>n>>q;
    int a[n+1];
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    sort(a+1,a+n+1);
    for(int i=1;i<=q;i++){
        int x,y;
        cin>>x>>y;
        int L=1,R=n;
        int p2=-1,p1=-1;
        while(L<=R){
            int mid=(L+R)/2;
            if(a[mid]<=y){
                p2=mid;
                L=mid+1;
            }else{
                R=mid-1;
            }
        }
        L=1,R=n;
        while(L<=R){
            int mid=(L+R)/2;
            if(a[mid]>=x){
                p1=mid;
                R=mid-1;
            }else{
                L=mid+1;
            }
        }
        if(p1==-1||p2==-1){
            cout<<0<<'\n';
        }else{
            cout<<p2-p1+1<<'\n';
        }
    }
}

全部评论

相关推荐

2025-12-15 11:27
门头沟学院 Java
哇哇的菜鸡oc:所有人不要理会,就好了,后面他就知道怎么回事了,只能说有的时候市场都是被宰的人搞坏的
点赞 评论 收藏
分享
LastWh1spe...:ssob真有些人和那个没睡醒一样
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务