Submission #1256382

#TimeUsernameProblemLanguageResultExecution timeMemory
1256382tvgkSelf Study (JOI22_ho_t2)C++20
100 / 100
131 ms5136 KiB
#include<bits/stdc++.h>
using namespace std;
#define task "a"
#define se second
#define fi first
#define ll long long
#define ii pair<ll, ll>
const long mxN = 3e5 + 7;
const ll inf = 1e18;

ll course[mxN], fr[mxN], m, n;

bool Binary(ll mid)
{
    ll req = m * n;
    for (int i = 1; i <= n; i++)
    {
        ll tmp = mid;
        if (course[i] > fr[i])
        {
            ll cnt = min(m, (tmp + course[i] - 1) / course[i]);
            req -= cnt;
            tmp -= cnt * course[i];
        }

        tmp = max(0LL, tmp);
        req -= (tmp + fr[i] - 1) / fr[i];
    
        if (req < 0)
            return 0;
    }

    return 1;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    //freopen(task".INP", "r", stdin);
    //freopen(task".OUT", "w", stdout);

    cin >> n >> m;
    for (int i = 1; i <= n; i++)
        cin >> course[i];
    for (int i = 1; i <= n; i++)
        cin >> fr[i];

    ll l = 0, r = inf, ans = 0;
    while (l <= r)
    {
        ll mid = (l + r) / 2;

        if (Binary(mid))
        {
            ans = mid;
            l = mid + 1;
        }
        else
            r = mid - 1;
    }
    cout << ans;
}

#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...