Submission #1295443

#TimeUsernameProblemLanguageResultExecution timeMemory
1295443hssaan_arifSelf Study (JOI22_ho_t2)C++20
0 / 100
119 ms7476 KiB
#include <bits/stdc++.h>
using namespace std;

#define endl "\n"
#define pb push_back
#define int long long
#define fi first
#define se second

const int N = 3e5 + 5, M = 1e9 + 7, LG = 20;

int n , A[N] , B[N] , C[N] , m;

void solve(){
    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]);
    }
    int l=0 , r=1e15;
    while(l+1 < r){
        int mid = (l+r)>>1;
        int ex = 0;
        for (int i=1 ; i<=n ; i++){
            int cr = (mid+A[i]-1)/A[i];
            cr = min(cr , m);
            ex += m-cr;
            C[i] = mid - cr*A[i];
        }
        for (int i=1 ; i<=n ; i++){
            if (C[i]<=0) continue; 
            int cr = (C[i]+B[i]-1)/B[i];
            ex -= cr;
        }
        // cout << mid << ' ' << ex << endl;
        if (ex >= 0){
            l = mid;
        }else{
            r = mid;
        }
    }
    cout << l << endl;
}

signed main(){
    // freopen("" , "r" , stdin);
    // freopen("" , "w" , stdout);
    // cout << setprecision(30);
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int ts = 1;
    // cin >> ts;
    while(ts--){
        solve();
    }
}
#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...