Submission #1182518

#TimeUsernameProblemLanguageResultExecution timeMemory
1182518ALTAKEXESelf Study (JOI22_ho_t2)C++20
100 / 100
220 ms7452 KiB
#include <bits/stdc++.h>
#define ll long long
#define ff first
#define ss second
using namespace std;
int main()
{
    ll n, m;
    cin >> n >> m;
    ll a[n + 5], b[n + 5];
    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]);
    }
    ll l = 0, r = 1e18;
    ll need[n + 5];
    while (l < r)
    {
        ll mid = (l + r + 1) / 2;
        fill(need + 1, need + n + 1, mid);
        ll left = 0;
        for (ll i = 1; i <= n; i++)
        {
            ll x = min((need[i] + a[i] - 1) / a[i], m);
            need[i] -= x * a[i];
            left += m - x;
        }
        ll cur = 0;
        bool ok = 1;
        for (ll i = 1; i <= n; i++)
        {
            if (need[i] > 0)
            {
                cur += (need[i] + b[i] - 1) / b[i];
                if (cur > left)
                {
                    ok = 0;
                    break;
                }
            }
        }
        if (ok)
            l = mid;
        else
            r = mid - 1;
    }
    cout << l;
    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...