제출 #1268103

#제출 시각아이디문제언어결과실행 시간메모리
1268103lambd47Self Study (JOI22_ho_t2)C++20
0 / 100
136 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 saldo=0;
        L(i,0,n-1){
            int at=(m+a[i]-1)/a[i];
            if(at<=M)saldo+=at;
            else{
                int x=m;
                x-=M*a[i];
                saldo+=M;
                saldo+=(x-1+b[i])/b[i];
            }
        }
        return saldo<=M*n;
    };
    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...