Submission #1139894

#TimeUsernameProblemLanguageResultExecution timeMemory
1139894grizoSelf Study (JOI22_ho_t2)C++20
100 / 100
175 ms5136 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define debug(v) \ cerr << "Line(" << __LINE__ << ") -> " << #v << " = " ; #define dbx(x) debug(x); cerr << x << "\n"; #define dbg(x) debug(x); cerr << "{ "; for(auto &e : x) cerr << e << ", "; cerr << "} \n"; #define log(x) (31^__builtin_clz(x)) const int N = 1e6+10, MOD = 1e9+7; void solve(){ int n, m; cin >> n >> m; vector<int> a(n); for(int i = 0 ; i < n ; i ++)cin >> a[i]; vector<int> b(n); for(int i = 0 ; i < n ; i ++)cin >> b[i]; auto check = [&](ll mid){ ll _b = 0; vector<ll> cur(n); for(int i = 0 ; i < n ; i ++){ if(b[i] >= a[i]){ _b += m; cur[i] = mid; continue; } ll rt = mid / a[i] + (mid % a[i] > 0); rt = min(rt, (ll)m); _b += m - rt; cur[i] = mid - (rt * a[i]); cur[i] = max(cur[i], 0ll); } for(int i = 0 ; i < n ; i ++){ ll rt = cur[i] / b[i] + (cur[i] % b[i] > 0); if(_b < rt){ return false; }else { _b -= rt; } } return true; }; ll l = 0, r = 2e18, ans = 0; while (l <= r) { ll mid = (l + r) / 2; if(check(mid)){ ans = mid; l = mid + 1; }else r = mid - 1; } cout << ans << "\n"; } int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); // freopen("king2.in", "r", stdin); // freopen("king2.out", "w", stdout); int tc = 1; // cin >> tc; for(int t = 1 ; t <= tc ; t ++){ solve(); } 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...