제출 #696217

#제출 시각아이디문제언어결과실행 시간메모리
696217DeepessonSelf Study (JOI22_ho_t2)C++17
10 / 100
78 ms11372 KiB
#include <bits/stdc++.h> #define MAX 305000 using ll = long long; ll A[MAX],B[MAX]; ll N,M; ll teto(ll a,ll b){ ll c = a/b; if(a%b)++c; return c; } bool possivel(ll x){ ll sum=0; for(int i=0;i!=N;++i){ ll necessario = teto(x,A[i]); ll gastar = std::min(necessario,M); ll falta = x-(gastar*A[i]); if(falta>0){ ll precisa = teto(falta,B[i]); sum-=precisa; }else { ll sobra = M-gastar; sum+=sobra; } } return sum>=0; } int main() { std::ios::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); std::cin>>N>>M; for(int i=0;i!=N;++i)std::cin>>A[i]; for(int i=0;i!=N;++i)std::cin>>B[i]; for(int i=0;i!=N;++i){ if(A[i]<B[i]){ A[i]=B[i]; } } ll min=A[0]; for(int i=1;i!=N;++i)min=std::min(min,A[i]); std::cout<<min<<"\n"; return 0; ll l=0,r=1LL<<60LL; while(l<r){ ll m=(l+r+1)/2; if(possivel(m)){ l=m; }else r=m-1; } std::cout<<l<<"\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...