Submission #890487

#TimeUsernameProblemLanguageResultExecution timeMemory
890487irmuunSelf Study (JOI22_ho_t2)C++17
100 / 100
233 ms13928 KiB
#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define pb push_back
#define ff first
#define ss second
#define all(s) s.begin(),s.end()
#define rall(s) s.rbegin(),s.rend()

int main(){
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    ll n,m;
    cin>>n>>m;
    ll a[n+5],b[n+5];
    for(ll i=1;i<=n;i++){
        cin>>a[i];
    }
    for(ll i=1;i<=n;i++){
        cin>>b[i];
        a[i]=max(a[i],b[i]);
    }
    ll l=0,r=1e18;
    ll need[n+5];
    while(l<r){
        ll mid=(l+r+1)/2;
        fill(need+1,need+n+1,mid);
        ll left=0;
        for(ll i=1;i<=n;i++){
            ll x=min((need[i]+a[i]-1)/a[i],m);
            need[i]-=x*a[i];
            left+=m-x;
        }
        ll cur=0;
        bool ok=true;
        for(ll i=1;i<=n;i++){
            if(need[i]>0){
                cur+=(need[i]+b[i]-1)/b[i];
                if(cur>left){
                    ok=false;
                    break;
                }
            }
        }
        if(ok){
            l=mid;
        }
        else{
            r=mid-1;
        }
    }
    cout<<l;
}
#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...