Submission #1117517

#TimeUsernameProblemLanguageResultExecution timeMemory
1117517wellthen_Self Study (JOI22_ho_t2)C++17
0 / 100
377 ms11944 KiB
#include <bits/stdc++.h>
#include <climits>
using namespace std;
typedef long long ll;
bool works(ll mid, vector<ll> classes, vector<ll> selfstudy, ll n, ll m){
    ll time = n*m;
    for(ll i = 0; i<ll(classes.size()); i++){
        if(classes[i] > selfstudy[i]){
            if(m * classes[i] >= mid){
                time -= (mid + classes[i] - 1) / classes[i];
            }
            else{
                time -= m;
                time -= (mid - m * classes[i] + selfstudy[i] - 1) / selfstudy[i];
            }
        }
        else {
            time -= (mid + selfstudy[i] - 1) / selfstudy[i];
        }
    }
    return time>=0;
}
int main() {
    ll n, m;
    cin >> n >> m;
    vector<ll> classes(n), selfstudy(n);
    for (int i = 0; i < n; i++) {
        cin >> classes[i];
    }
    for (int i = 0; i < n; i++) {
        cin >> selfstudy[i];
    }
    ll lo = 0, hi = ll(1e18), best = 0;
    while (lo <= hi) {
        ll mid = lo + (hi - lo) / 2; 
        if (works(mid, classes, selfstudy, n, m)) {
            best = mid; 
            lo = mid + 1;
        } else {
            hi = mid - 1; 
        }
    }

    cout << best << endl;
    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...