#include <bits/stdc++.h>
using namespace std;
int a[100005];
int t[100005]; 
int main (){
	int n,q;
	cin>>n>>q;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=n;i++){
		cin>>t[i];
		t[i]=a[i]-t[i];
		if(t[i]<0)t[i]=1000001;
	}
	sort(t+1,t+n+1);
	for(int i=1;i<=q;i++){
		int x,y;
		cin>>x>>y;
		int r=n+1;
		int l=0;
		int ans=-1;
		while(l+1<r){
			int mid=(l+r)/2;
			if(t[mid]>=y){
				r=mid;
				ans=mid;
			}else l=mid;
		}
		if(t[ans]<y){
			cout<<"NO"<<endl;
			continue;
		}
		if(ans>=x)cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	//	cout<<ans<<endl;
	} 
	return 0;
}

1 条评论

  • @ 2026-7-2 9:06:04
    #include<bits/stdc++.h>
    using namespace std;
    struct sj{
        long long a,b;
    }a[1000001];
    bool cmp(sj x,sj y){
        return (x.a-x.b)>(y.a-y.b);
    }
    long long n,q;
    int main(){
        cin>>n>>q;
        for(int i=1;i<=n;i++)cin>>a[i].a;
        for(int i=1;i<=n;i++)cin>>a[i].b;
        sort(a+1,a+n+1,cmp);
        while(q--){
            long long v,s;
            cin>>v>>s;
            long long l=1,r=n;
            while(l<=r){
                long long mid=(l+r)/2;
                if(a[mid].b+s<a[mid].a)l=mid+1;
                else r=mid-1;
            }
            if(l-1>=v)cout<<"YES\n";
            else cout<<"NO\n";
        }
        return 0;
    }
    
    • 1

    信息

    ID
    4586
    时间
    ms
    内存
    MiB
    难度
    2
    标签
    递交数
    37
    已通过
    17
    上传者