Submission #1157932

#TimeUsernameProblemLanguageResultExecution timeMemory
1157932wjliangtpeSelf Study (JOI22_ho_t2)C++20
62 / 100
76 ms5012 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define oo 10000000000000001
int n,m,a[300005],b[300005],l=oo,r,x,jump;
bool psb(int X){
    int cnt=0;
    for(int i=1;i<=n;i++){
        if(a[i]*m>=X) cnt+=X/a[i]+((X%a[i])?1:0);
        else cnt+=m+(X-m*a[i])/b[i]+(((X-m*a[i])%b[i])?1:0);
        if(cnt>m*n) return 0;
    }
    return 1;
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        cin>>b[i];
        a[i]=max(a[i],b[i]);
    }
    for(int i=1;i<=n;i++){
        r+=a[i];
        l=min(a[i],l);
    }
    l*=m;
    r=r*m/n+1;
    x=l;
    int jump=r-l;
    if(psb(r)){
        cout<<r<<'\n';
        return 0;
    }
    while(jump){
        while(psb(x+jump)) x+=jump;
        jump/=2;
    }
    cout<<x<<'\n';
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...