제출 #1295469

#제출 시각아이디문제언어결과실행 시간메모리
1295469hssaan_arifSelf Study (JOI22_ho_t2)C++20
100 / 100
119 ms7480 KiB
#include <bits/stdc++.h> using namespace std; #define endl "\n" #define pb push_back #define int long long #define fi first #define se second const int N = 3e5 + 5, M = 1e9 + 7, LG = 20; int n , A[N] , B[N] , C[N] , m; void solve(){ cin >> n >> m; for (int i=1 ; i<=n ; i++){ cin >> A[i]; } for (int i=1 ; i<=n ; i++){ cin >> B[i]; } for (int i=1 ; i<=n ; i++){ A[i] = max(A[i] , B[i]); } int l=0 , r=1e18; r+=5; while(l+1 < r){ int mid = (l+r)>>1; int ex = 0; for (int i=1 ; i<=n ; i++){ int cr = (mid+A[i]-1)/A[i]; cr = min(cr , m); ex += (m-cr); C[i] = mid - cr*A[i]; } bool g = 0; // cout << mid << ' ' << ex << endl; for (int i=1 ; i<=n ; i++){ if (C[i]<=0) continue; int cr = (C[i]+B[i]-1)/B[i]; if (ex < cr){ r = mid; g=1; break; } ex -= cr; } // cout << g << ' '; if (g){ continue; } // cout << mid << ' ' << ex << endl; if (ex >= 0){ l = mid; }else{ r = mid; } } cout << l << endl; } signed main(){ // freopen("" , "r" , stdin); // freopen("" , "w" , stdout); // cout << setprecision(30); ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int ts = 1; // cin >> ts; while(ts--){ solve(); } }
#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...