Submission #855549

#TimeUsernameProblemLanguageResultExecution timeMemory
855549ancuber1031Self Study (JOI22_ho_t2)C++14
0 / 100
986 ms10068 KiB
#pragma GCC optimize("Ofast") #include <bits/stdc++.h> using namespace std; #define int __int128 #define pii pair<int,int> #define p_q priority_queue #define endl '\n' #define pb push_back long long N, M; int n, m; const int one = 1, two = 2, zero = 0; vector<int> a, b; bool check(int mid) { int rem = n*m; for (int i = 0; i < n; ++i) { if (a[i] > b[i]) { if (a[i]*m >= mid) { rem -= mid/a[i]+(mid%a[i] > zero); } else { int cur = mid-a[i]*m; rem -= m; rem -= cur/b[i]+(cur%b[i] > zero); } } else { rem -= mid/b[i]+(mid%b[i] > zero); } } return rem >= zero; } signed main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); cin>>N>>M; n = N, m = M; a.resize(n), b.resize(n); for (auto& i : a) { long long x; cin>>x; i = x; } for (auto& i : b) { long long x; cin>>x; i = x; } int l = zero, r = 2e36; while(r-l > one) { int mid = (l+r)/two; if (check(mid)) l = mid; else r = mid; } long long ans = l; cout<<ans<<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...