Submission #1333307

#TimeUsernameProblemLanguageResultExecution timeMemory
1333307wstcubeSelf Study (JOI22_ho_t2)C++20
100 / 100
263 ms5104 KiB
#include <bits/stdc++.h>
#define fi first
#define se second
#define ll long long
#define pb push_back
using namespace std;
const int N = 3e5+5;
ll b[N],a[N];
bool can(ll x,ll m,ll n){
    ll c=0;
    for(int i=0;i<n;i++){
        if(a[i]>b[i]){
            if(m>=(x+a[i]-1)/a[i])
                c+=(x+a[i]-1)/a[i];
            else{
                ll sigma67 = m*a[i];
                c+=m;
                c+=(x-sigma67+b[i]-1)/b[i];
            }
        }
        else
            c+=((x+b[i]-1)/b[i]);
        if(c>n*m)
            return false;
    }
    return true;
}
int main(){
    ll n;
    cin >> n;
    ll m;
    cin >> m;
    ll ma=0;
    for(int i=0;i<n;i++){
        cin >> a[i];
        ma = max(a[i],ma);
    }
    for(int i=0;i<n;i++)
        cin >> b[i];
    ll l=1,r=1e18;
    while(l!=r){
        ll x = (l+r+1)/2;
        if(can(x,m,n))
            l=x;
        else
            r=x-1;
    }

    cout << l;
    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...