Submission #857317

#TimeUsernameProblemLanguageResultExecution timeMemory
857317StefanSebezSelf Study (JOI22_ho_t2)C++14
54 / 100
329 ms5112 KiB
#include <bits/stdc++.h> using namespace std; #define int unsigned long long const int inf=1e18+5000; signed main() { int n,m;cin>>n>>m; int a[n+1],b[n+1]; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++)cin>>b[i]; int l=1,r=inf,mid=l+(r-l)/2,res=0; while(l<=r) { //printf("%lld %lld %lld: ",l,mid,r); int sum=0; for(int i=1;i<=n;i++) { int x,z,k=inf; if(a[i]<=b[i]) { x=0; z=(mid+b[i]-1)/b[i]; k=max(x,z); } else { x=mid/a[i]; if(x>m) x=m; z=(mid-x*(a[i]-b[i])+b[i]-1)/b[i]; k=min(k,max(x,z)); x++; if(x>m) x=m; z=(mid-x*(a[i]-b[i])+b[i]-1)/b[i]; k=min(k,max(x,z)); } sum+=k; /*int k1=inf; for(int j=0;j<=m;j++) { int z=ceil((double)(mid-j*(a[i]-b[i]))/b[i]); k1=min(k1,max(j,z)); }*/ /*int x=0; if(a[i]>b[i])x=min(mid/(a[i]-b[i]),m); sum+=ceil((mid-x*(a[i]-b[i]))/b[i]);*/ //cout<<"|"<<k<<" "<<k1<<"| "; } //cout<<endl; if(sum<=n*m) { res=mid; l=mid+1; } else r=mid-1; mid=l+(r-l)/2; } cout<<res<<endl; 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...