Submission #1329491

#TimeUsernameProblemLanguageResultExecution timeMemory
1329491lywoemSelf Study (JOI22_ho_t2)C++20
0 / 100
0 ms344 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long 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(ll X, ll N, ll M, vector<ll> &vecA, vector<ll> &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
    ll maxindi = M; // max số lesson mà được đến lớp của từng môn

    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];
        }

        else if (!pon) {
            ll schooldays = (X + vecA[i] - 1) / vecA[i];

            if (schooldays > maxindi) {
                ll days = maxindi;
                ll left = X - (maxindi * vecA[i]);
                ll homedays = (left + vecB[i] - 1) / vecB[i];
                days += homedays;
                cnt += days;
            }

            else cnt += schooldays;
        }
    }

    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);

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

    ll lo = 0, hi = 1e16, ans = 0;
    while (lo <= hi) {
        ll 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...