Submission #987731

#TimeUsernameProblemLanguageResultExecution timeMemory
987731_callmelucianSelf Study (JOI22_ho_t2)C++14
100 / 100
232 ms13940 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; typedef pair<ll,ll> pl; typedef pair<int,int> pii; typedef tuple<int,int,int> tt; #define all(a) a.begin(), a.end() #define filter(a) a.erase(unique(all(a)), a.end()) const int mn = 3e5 + 5; ll a[mn], b[mn], cur[mn]; ll n, m; bool ok (ll lb) { ll period = n * m; for (int i = 0; i < n; i++) { cur[i] = 0; if (a[i] < b[i]) continue; ll need = min(m, lb / a[i] + (lb % a[i] ? 1 : 0)); cur[i] = need * a[i], period -= need; } for (int i = 0; i < n; i++) { if (cur[i] >= lb) continue; ll need = (lb - cur[i]) / b[i] + ((lb - cur[i]) % b[i] ? 1 : 0); if (need > period) return 0; period -= need; } return 1; } int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for (int i = 0; i < n; i++) cin >> a[i]; for (int i = 0; i < n; i++) cin >> b[i]; ll ans = 0; for (ll i = (1LL << 59); i; i >>= 1) if (ok((ans | i))) ans |= i; cout << ans; 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...