제출 #831130

#제출 시각아이디문제언어결과실행 시간메모리
831130jasminSelf Study (JOI22_ho_t2)C++17
0 / 100
191 ms10000 KiB
//JOI 2022 Final round
#include<bits/stdc++.h>
using namespace std;
#define int long long

const int INF=1e18;

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 = (x+a[i]-1)/a[i];
            int db = 0;
            
            if(da > m){
                da = m;

                int x2 = x - (da*a[i]);
                assert(0<x2);
                db = (x2 + b[i]-1)/b[i];
            }
    
            d += da + db;
        }
        else{

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

    }

    assert(0<d);
    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=1; int r=INF;
    int ans=1;
    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...