Submission #734511

#TimeUsernameProblemLanguageResultExecution timeMemory
7345111075508020060209tcSelf Study (JOI22_ho_t2)C++14
100 / 100
508 ms20748 KiB
#include<bits/stdc++.h> using namespace std; #define int __int128 int n;int m; int ar[300005]; int br[300005]; int cr[300005]; int ok(int mi){ int lft=0; for(int i=1;i<=n;i++){ int nd=(mi+ar[i]-1)/ar[i]; if(nd<=m){ cr[i]=0; lft+=m-nd; }else{ cr[i]=mi-ar[i]*m; } } for(int i=1;i<=n;i++){ if(cr[i]==0){continue;} lft-=(cr[i]+br[i]-1)/br[i]; } if(lft>=0){return 1;} return 0; } int read(){ long long ret; cin>>ret; return ret; } signed main(){ //cin>>n>>m; n=read();m=read(); for(int i=1;i<=n;i++){ ar[i]=read(); } for(int i=1;i<=n;i++){ br[i]=read(); ar[i]=max(ar[i],br[i]); } int l=1;int r=1e18; while(l<r){ int mi=l+(r-l+1)/2; if(ok(mi)){ l=mi; }else{ r=mi-1; } } long long t=l; cout<<t<<endl; }
#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...