95求调
查看原帖
95求调
1010979
Rightit楼主2024/10/25 16:58
#include<bits/stdc++.h>
using namespace std;
#define int long long

int t,maxn,ans=0,n,m;
int l,r,mid;
int a[1000005],b[1000005];

bool check(int x)
  {
    int s=0;
    for(int i=1;i<=t;i++){
        if(a[i]+b[i]*x>=m){
            s+=a[i]+b[i]*x;
        }
        if(s>=n){
            break;
        }
    }
        if(s<=n){
            return 1;
        }
        return 0;
    
}
signed main () {
    cin >> t >> n >> m;
    for(int i=1;i<=t;i++){
        cin >> a[i];
    }
    for(int i=1;i<=t;i++){
        cin >> b[i];
    }
    l=1,r=1e18;
    int p=0;
    if(t==1){
            int i;
            if(a[1]>=n){
                cout << 0;
                return 0;
            }
            for(i=1;i<=10005;i++){
                if(a[1]+b[1]*i>=n){
                    cout << i;
                    return 0;
                }
            }
        }
    while(l<=r){
        mid=l+(r-l)/2;
        if(check(mid)){
            ans=mid;
            l=mid+1;
        }
        else{
            r=mid-1;
            p++;
        }
    }
    if(p>=10000){
        cout<<0;
        return 0;
    }
    cout << ans+1;
    return 0;
}
2024/10/25 16:58
加载中...