Submission #595222

#TimeUsernameProblemLanguageResultExecution timeMemory
595222PoPularPlusPlusSelf Study (JOI22_ho_t2)C++17
0 / 100
318 ms5020 KiB
//#pragma GCC optimize("O3")
//#pragma GCC target("avx2")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
//#define y2 y_2
#define endl '\n'
#define int ll
using namespace std;
using namespace __gnu_pbds;
 
typedef long long ll;
typedef long double ld;
mt19937 rnd(time(NULL));
const ll mod=998244353;
const int N=600010;
const int Lg=16;
ll a[N],b[N];
ll n,m;
bool ok(ll D){
    ll sum=0ll;
    for (int i=1;i<=n;i++){
        if (a[i]*m>=D){
            sum+=m-(D+a[i]-1)/a[i];
        } else {
            sum-=(D-a[i]*m+b[i]-1)/b[i];
        }
    }
    return (sum>=0);
}
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]);
    ll ans=0ll;
    for (ll i=60;i>=0;i--){
        if (ok(ans+(1ll<<i))) ans+=(1ll<<i);
    }
    cout<<ans<<endl;
 
}
int32_t main() {
 
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int tt=1;
//    cin>>tt;
    while (tt--){
        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...