Submission #1329535

#TimeUsernameProblemLanguageResultExecution timeMemory
1329535shoryu386Self Study (JOI22_ho_t2)C++20
100 / 100
145 ms5132 KiB
#include<bits/stdc++.h>
using namespace std;
typedef __int128 ll;
typedef unsigned long long ull;
#define l(a, b, i) for (ll i = a; i < b; i++)
#define rl(a, b, i) for (ll i = a; i >= b; i--)
#define vpair vector<pair<ll, ll>>
#define inf LLONG_MAX
#define ninf LLONG_MIN

bool meow(long long X, long long N, long long M, vector<long long> &vecA, vector<long long> &vecB) {
    ll maxtotal = N * M; // tổng số lessons accross các môn
    ll cnt = 0; // nếu lát cnt > maxtotal thì false

    l(1, N + 1, i) {
        //ll cur = 0; // cur knowledge of this subject
        bool pon; // môn này có đi học k, hay pon :D
        if (vecB[i] >= vecA[i]) pon = true;
        else pon = false;

        if (pon) {
            ll days = (X + vecB[i] - 1) / vecB[i];
            cnt += days;
        }

        else if (!pon) {
            if (X > M * vecA[i]) {
                ll days = M;
                ll left = X - M * vecA[i];
                days += (left + vecB[i] - 1) / vecB[i];
                cnt += days;
            }

            else {
                ll days = (X + vecA[i] - 1) / vecA[i];
                cnt += days;
            }
        }
    }

    return (cnt <= maxtotal);
}

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    //freopen("selfstudy.inp", "r", stdin);
    //freopen("selfstudy.out", "w", stdout);

    long long N, M; cin >> N >> M; vector<long long> vecA(N + 1, 0), vecB(N + 1, 0);
    l(1, N + 1, i) cin >> vecA[i];
    l(1, N + 1, i) cin >> vecB[i];

    long long lo = 1, hi = 1e18; long long ans = 0;
    while (lo <= hi) {
        long long mid = (lo + hi) / 2;

        if (meow(mid, N, M, vecA, vecB)) {
            ans = mid;
            lo = mid + 1;
        }
        else hi = 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...