Submission #1340947

#TimeUsernameProblemLanguageResultExecution timeMemory
1340947WarinchaiSelf Study (JOI22_ho_t2)C++20
0 / 100
137 ms5128 KiB
#include<bits/stdc++.h>
#define int long long
using namespace std;

int a[300005],b[300005];
int n,m;

int can(int md){
    int left=0;
    for(int i=1;i<=n;i++){
        int temp=md/a[i];
        if(a[i]*temp<md)temp++;
        if(temp<=m){
            left+=m-temp;
            //cerr<<"left:"<<m-temp<<"\n";
        }else{
            int need=md-m*a[i];
            int temp2=need/b[i];
            if(temp2*b[i]<need)temp2++;
            left-=temp2;
            //cerr<<"need:"<<temp2<<"\n";
        }
    }
    return left>=0;
}

int32_t main(){
    ios_base::sync_with_stdio(false);
    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]);
    }
    int st=0,en=1e18,ans=0;
    while(st<=en){
        int m=(st+en)/2;
        //cerr<<"m:"<<m<<'\n';
        if(can(m)){
            st=m+1;
            ans=m;
        }else{
            en=m-1;
        }
    }
    cout<<ans<<"\n";
}
#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...