제출 #1306602

#제출 시각아이디문제언어결과실행 시간메모리
1306602hxluk.kaSelf Study (JOI22_ho_t2)C++20
0 / 100
1097 ms5128 KiB
#include <iostream> using namespace std; #define ll long long const ll nx=3e5, inf=4e18; ll n, m, a[nx], b[nx], l, r, mid, mx_val; ll learn(int i, ll x, ll j) { ll act=j*a[i]; ll need=max(0LL, x-act); ll add=(need+b[i]-1)/b[i]; return j+add; } int canAchive(ll x) { ll total=0; for (int i=1; i<=n; i++) { ll mn=inf; ll est=0; if (a[i]>0&&x>0) est = x / a[i]; for (int j=0; j<=m; j++) { mn=min(mn, learn(i, x, j)); } mn=min(mn, learn(i,x,0)); mn=min(mn, learn(i,x,m)); total+=mn; if (total>m*n) return 0; } return total<=m*n; } int main() { cin.tie(0)->sync_with_stdio(0); cin>>n>>m; for (int i=1; i<=n; i++) cin>>a[i], mx_val=max(mx_val, a[i]); for (int i=1; i<=n; i++) cin>>b[i], mx_val=max(mx_val, b[i]); r=mx_val*m; while (l<r) { mid=(l+r+1)/2; if (canAchive(mid)) l=mid; else r=mid-1; } cout << l; }
#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...