Submission #528134

#TimeUsernameProblemLanguageResultExecution timeMemory
528134dooweySelf Study (JOI22_ho_t2)C++14
0 / 100
426 ms5036 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;

#define fi first
#define se second
#define mp make_pair
#define fastIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

const int N = (int)3e5 + 10;
ll A[N];
ll B[N];

ll ceil(ll x, ll y){
    return (x + y - 1) / y;
}

int main(){
    fastIO;
    //freopen("in.txt","r",stdin);
    ll m;
    int n;
    cin >> n >> m;
    for(int i = 1; i <= n; i ++ ){
        cin >> A[i];
    }
    for(int i = 1; i <= n; i ++ ){
        cin >> B[i];
    }
    for(int i = 1; i <= n; i ++ ){
        A[i] = max(A[i], B[i]);
    }
    ll li = 1;
    ll ri = (ll)1e17;
    ll mid;
    ll have = 0;
    ll need = 0;
    ll take;
    ll rem;
    while(li + 1 < ri){
        mid = (li + ri) / 2;
        have = 0;
        need = 0;
        for(int i = 1; i <= n; i ++ ){
            take = ceil(mid, A[i]);
            if(take <= m){
                have += m - take;
            }
            else{
                rem = mid - A[i] * 1ll * m;
                if(rem >= 0) need += ceil(rem, B[i]);
            }
        }
        if(have >= need){
            li = mid;
        }
        else{
            ri = mid;
        }
    }
    cout << li << "\n";
    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...