Submission #936137

#TimeUsernameProblemLanguageResultExecution timeMemory
936137weakweakweakSelf Study (JOI22_ho_t2)C++14
100 / 100
337 ms11600 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
ll n, m, a[310000], b[310000];

bool can (ll v) {
    __int128_t now = 0;
    for (int i = 1; i <= n; i++) {
        ll inclass = (v + a[i] - 1) / a[i];
        if (inclass == m) continue;
        if (inclass < m) now += m - inclass;
        else {
            ll z = v - m * a[i];
            now -= (z + b[i] - 1) / b[i];
        }
    }
return now >= 0;}

int main () {
    ios_base::sync_with_stdio(false); cin.tie(0);
    cin >> n >> m;
    ll z = LLONG_MAX;
    for (int i = 1; i <= n; i++) cin >> a[i];
    for (int i = 1; i <= n; i++) {
        cin >> b[i];
        a[i] = max(a[i], b[i]);
        z= min(z, a[i]);
    }

    ll l = 0, r = 11e17;
    while (l + 10 < r) {
        ll mid = (l + r) / 2;
        if (can(mid)) l = mid;
        else r = mid;
    }
    while (can(l + 1)) l++;
    // cout << can(19) << '\n';
    cout << l << '\n'; 
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...