Submission #1268530

#TimeUsernameProblemLanguageResultExecution timeMemory
1268530lambd47Self Study (JOI22_ho_t2)C++20
100 / 100
114 ms4936 KiB
#include <bits/stdc++.h>

#define int long long 
using namespace std;

#define sz(v) ((int)(v).size())
#define all(v) (v).begin(), (v).end()
#define L(i, j, k) for(int i = (j); i <= (k); ++i)
#define R(i, j, k) for(int i = (j); i >= (k); --i)

std::mt19937 rng(std::chrono::steady_clock::now().time_since_epoch().count());

void solve() {
    int n,M;cin>>n>>M;
    vector<int> a(n);
    vector<int> b(n);
    L(i,0,n-1)cin>>a[i];
    L(i,0,n-1)cin>>b[i];
    L(i,0,n-1)a[i]=max(a[i],b[i]);
    auto testa=[&](int m)->bool{
        int tot=0;
        L(i,0,n-1){
            int at=(m+a[i]-1)/a[i];
            if(at<=M){
                tot+=at;
            }
            else{
                tot+=M;
                int x=m-a[i]*M;
                tot+=(x+b[i]-1)/b[i];
            }
            if(tot>n*M)return false;
        }
        return true;
    };
    int l=0;
    int r=1e18;
    int ans=0;
    while(l<=r){
        int m=(l+r)/2;
        if(testa(m)){
            ans=m;
            l=m+1;
        }
        else r=m-1;
    }
    cout<<ans<<"\n";


}
 
int32_t main() {
    std::cin.tie(0)->sync_with_stdio(0); 
    std::cin.exceptions(std::cin.failbit);

    int T = 1;
//    std::cin >> T;
    while(T--) {
        solve();
    }

	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...