Submission #1243534

#TimeUsernameProblemLanguageResultExecution timeMemory
1243534miniobSelf Study (JOI22_ho_t2)C++20
100 / 100
243 ms5112 KiB
#include <bits/stdc++.h> using namespace std; long long n, m; long long a[300007]; long long b[300007]; bool spr(long long sr) { long long all = 0; for(int i = 0; i < n; i++) { if(a[i] > b[i]) { long long temp = min((sr + a[i] - 1) / a[i], m); //cout << temp << " " << ceil(double(max(sr - temp * a[i], (long long)0)) / double(b[i])) << endl; all += temp; all += (max(sr - temp * a[i], (long long)0) + b[i] - 1) / b[i]; } else { all += (sr + b[i] - 1) / b[i]; //cout << ceil(double(sr) / double(b[i])) << endl; } if(all > n * m) { return false; } } if(all > n * m) { return false; } return true; } int main() { cin >> n >> m; for(int i = 0; i < n; i++) { cin >> a[i]; } for(int i = 0; i < n; i++) { cin >> b[i]; } long long l = 0, r = 1000000000000000001, odp = 0; //cout << spr(18) << endl; while(l <= r) { long long sr = (l + r) / 2; if(spr(sr)) { odp = sr; l = sr + 1; } else { r = sr - 1; } } cout << odp << endl; 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...