Submission #1302160

#TimeUsernameProblemLanguageResultExecution timeMemory
1302160nathlol2Self Study (JOI22_ho_t2)C++20
100 / 100
96 ms5144 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 333333;
int n, m, a[N], b[N];

int _div(int _a, int _b){
    if(_a % _b) return _a / _b + 1;
    return _a / _b;
}

bool ok(int x){
    int cnt = 0;
    for(int i = 1;i<=n;i++){
        if(a[i] * m < x){
            cnt += m + _div(x - a[i] * m, b[i]);
        }else{
            cnt += _div(x, a[i]);
        }
        if(cnt > n * m) return 0;
    }
    return 1;
}

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> n >> m;
    for(int i = 1;i<=n;i++) cin >> a[i];
    for(int i = 1;i<=n;i++) cin >> b[i], a[i] = max(a[i], b[i]);
    int l = 1, r = 1e18, ans = 1;
    while(l <= r){
        int md = (l + r) / 2;
        if(ok(md)){
            ans = md;
            l = md + 1;
        }else{
            r = md - 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...