Submission #831112

#TimeUsernameProblemLanguageResultExecution timeMemory
831112jasminSelf Study (JOI22_ho_t2)C++17
0 / 100
77 ms2644 KiB
//JOI 2022 Final round
#include<bits/stdc++.h>
using namespace std;
#define int long long

const int INF=LLONG_MAX;

bool possible(int x, int n, int m, vector<int>& a, vector<int>& b){
    
    int d=0;
    for(int i=0; i<n; i++){

        if(a[i] > b[i]){

            int da = min(m, (x+a[i]-1)/a[i]);
            int db = ((x - da*a[i]) + b[i]-1)/b[i];

            d += da + db;
        }
        else{

            int db = (x+b[i] -1)/b[i];
            d += db;
        }

    }

    return d <= n*m;
}

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

    int n, m;
    cin >> n >> m;
    vector<int> a(n);
    for(int i=0; i<n; i++){
        cin >> a[i];
    }
    vector<int> b(n);
    for(int i=0; i<n; i++){
        cin >> b[i];
    }

    int l=0; int r=INF;
    int ans=0;
    while(l<=r){
        int mi=l+(r-l)/2;

        if(possible(mi, n, m, a, b)){
            ans=mi;
            l=mi+1;
        }
        else{
            r=mi-1;
        }
    }

    cout << ans << "\n";
}
#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...