제출 #1325265

#제출 시각아이디문제언어결과실행 시간메모리
1325265bbldrizzySelf Study (JOI22_ho_t2)C++20
100 / 100
274 ms5092 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll n, m; 
using i128 = __int128_t; 

bool check(vector<ll> &a, vector<ll> &b, ll K) {
    i128 sm = 0;
    for (ll i = 0; i < n; i++) {
        if (a[i] > b[i]) {
            if (m*a[i] < K) {
                sm += m;
                ll tmp = K; tmp -= m*a[i];
                sm += ((tmp/b[i]) + ((tmp%b[i]) > 0));
            } else {
                sm += ((K/a[i]) + ((K%a[i]) > 0));
            }
        } else {
            sm += ((K/b[i]) + ((K%b[i]) > 0));
        }
    }
    return sm <= (i128)m*n;
}

int main() {
    cin >> n >> m;
    vector<ll> a(n);
    vector<ll> b(n);
    for (auto &it: a) cin >> it;
    for (auto &it: b) cin >> it;
    ll lo = 0;
    ll hi = 1e18;
    // cout << check(a, b, 18) << "\n";
    while (lo < hi) {
        ll mid = lo + (hi - lo)/2;
        if (check(a, b, mid)) {
            lo = mid+1;
        } else {
            hi = mid;
        }
    }
    if (!check(a, b, lo)) --lo;
    cout << lo;
}
#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...