Submission #1299896

#TimeUsernameProblemLanguageResultExecution timeMemory
1299896exoworldgdSelf Study (JOI22_ho_t2)C++20
100 / 100
119 ms7616 KiB
#pragma GCC optimize("O5,unroll-loops,inline,fast-math")
#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
#include <bits/stdc++.h>
#define int long long
#define exoworldgd cin.tie(0)->sync_with_stdio(0), cout.tie(0)
using namespace std;
const int N=3e5+5;
int n,m,a[N],b[N],l=0,r=1e18,ans=0;
signed main(void) {
    exoworldgd;
    cin >> n >> m;
    for(int i=0;i<n;i++) cin >> a[i];
    for(int i=0;i<n;i++) cin >> b[i];
    for(int i=0;i<n;i++) a[i] = max(a[i],b[i]);
    while(l <= r){
        int mid = (l+r)>>1, need[n],ex=0,ok=0;
        for(int i=0,x;i<n;i++) x=min(m,(mid+a[i]-1)/a[i]),need[i]=max(0LL,mid-x*a[i]),ex += m-x;
        for(int i=0;i<n;i++){
            if(!need[i]) continue;
            int c=(need[i]+b[i]-1)/b[i];
            if(c > ex){ok=1; break; }
            ex -= c;
        }
        ok ? r = mid-1 : (ans = mid, l = mid+1);
    }
    cout << ans;
}
#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...