全部评论 1

  • #include<bits/stdc++.h>
    using namespace std;
    int n,a[200010],b[200010];
    long long m;
    bool check(int x){
        long long sum=0;
        for(int i=0;i<n;i++){
            if(x-a[i]>b[i]){
                return 0;
            }else{
                sum+=max(0,x-a[i]);
            }
        }
        return sum<=m;
    }
    int upper_ans(int l,int r){
        int ans=0;
        while(l<=r){
            long long mid=l+r>>1;
            if(check(mid)!=0){
                ans=mid;
                l=mid+1;
            }else{
                r=mid-1;
            }
        }
        return ans;
    }
    int main(){
        cin>>n>>m;
        int l=1e9,r=0;
        for(int i=0;i<n;i++){
            cin>>a[i];
            l=min(l,a[i]);
        }
        for(int i=0;i<n;i++){
            cin>>b[i];
            r=max(r,a[i]+b[i]);
        }
        cout<<upper_ans(l,r);
        return 0;
    }
    

    1周前 来自 江苏

    3

热门讨论