Submission #1149886

#TimeUsernameProblemLanguageResultExecution timeMemory
1149886henriessSelf Study (JOI22_ho_t2)C++20
100 / 100
138 ms7492 KiB
#include <bits/stdc++.h> using namespace std; vector<long long> highest; long long n,m; vector<long long> A; vector<long long> B; bool check(long long mid){ long long ret = 0; for(int i = 0;i<n;i++){ if (B[i] > A[i]){// try to use B[i] for its all of A's classes if (B[i] * m >= mid){ long long temp = (mid+B[i] -1) / B[i]; ret += temp; } else{ long long temp = (mid - m*B[i] +B[i]-1) / B[i]; ret += m + temp; } } else{ if (A[i] * m >= mid){ long long temp = (mid+A[i]-1)/A[i]; ret += temp; } else{ long long temp = (mid - m*A[i] + B[i] - 1) / B[i]; ret += m + temp; } } if (ret > n * m){ return false; } } return ret <= n * m; } void bsta(){ long long lb = 0; long long ub = 1e18; long long mid = -1; long long ans = -1; while (lb <= ub){ mid = (lb + ub) / 2; if (check(mid)){ ans = mid; lb = mid + 1; } else{ ub = mid - 1; } } cout << ans; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m; A.resize(n); B.resize(n); highest.resize(n,0); for(int i = 0;i<n;i++){ cin >> A[i]; highest[i] = max(highest[i],A[i]); } for(int i = 0;i<n;i++){ cin >> B[i]; highest[i] = max(highest[i],B[i]); } bsta(); }
#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...