Submission #828160

#TimeUsernameProblemLanguageResultExecution timeMemory
828160RaresFelixSelf Study (JOI22_ho_t2)C++17
0 / 100
515 ms9872 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int MN = 300001; const ll INF = 1e18 + 71; ll n, m, A[MN], B[MN]; bool ok(ll val) { if(!val) return 1; ll nr_sar = 0; for(int i = 1; i <= n; ++i) { if((val - 1) / A[i] + 1 <= m) { nr_sar += m - ((val - 1) / A[i] + 1); } else { nr_sar -= (val - m * A[i] - 1) / B[i] + 1; } } return (nr_sar >= 0); } int main() { cin >> n >> m; for(int i = 1; i <= n; ++i) cin >> A[i]; for(int i = 1; i <= n; ++i) { cin >> B[i]; if(A[i] < B[i]) A[i] = B[i]; } ll st = 0, dr = INF, mij; while(st < dr) { mij = st + (dr - st + 1) / 2; if(ok(mij)) { st = mij; } else dr = mij - 1; } ll mini = INF; for(int i = 1; i <= n; ++i) mini = min(A[i], mini); if(m == 1) { assert(!(mini < st)); } cout << st << "\n"; 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...