Submission #1149169

#TimeUsernameProblemLanguageResultExecution timeMemory
1149169njoopSelf Study (JOI22_ho_t2)C++17
64 / 100
87 ms4956 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;

int n, m, a[300010], b[300010];

bool solve(int num) {
    int clnum = 0;
    for(int i=1; i<=n; i++) {
        if(a[i] <= b[i]) {
            clnum += num/b[i] + (num%b[i] ? 1 : 0);
        } else if(num/a[i] + (num%a[i] ? 1 : 0) <= n){
            clnum += num/a[i] + (num%a[i] ? 1 : 0);
        } else {
            clnum += n;
            int t = num - a[i]*n;
            clnum += t/b[i] + (t%b[i] ? 1 : 0);
        }
        if(clnum > n*m) return false;
    }
    return true;
}

signed main() {
    cin.tie(0)->sync_with_stdio(0);
    cin >> n >> m;
    for(int i=1; i<=n; i++) {
        cin >> a[i];
    } 
    for(int i=1; i<=n; i++) {
        cin >> b[i];
    }
    int l=0, r=2e18;
    while(l < r) {
        int mid = (l+r)/2;
        if(solve(mid)) {
            l = mid+1;
        } else {
            r = mid;
        }
    }
    cout << l-1;
    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...