Submission #1179709

#TimeUsernameProblemLanguageResultExecution timeMemory
1179709Szymon_PilipczukSelf Study (JOI22_ho_t2)C++20
62 / 100
262 ms5116 KiB
#include <bits/stdc++.h>
using namespace std;
#define st first
#define nd second
#define ll long long
ll b[300000];
ll a[300000];
ll n,m;
bool check(ll v)
{
    ll av = 0;
    for(int i = 0;i<n;i++)
    {
        ll cv = v;
        //cout<<cv<<"\n";
        if(m*a[i] < cv)
        {
            cv-=m*a[i];
            av -= (cv+b[i]-1)/b[i];
        }
        else
        {
            av += m - (cv+a[i]-1)/a[i];
        }
        if(av < -1e18)
        {
            break;
        }
        //cout<<av<<"\n";
    }
    if(av >= 0)
    {
        return true;
    }
    return false;
}
int main()
{

    cin>>n>>m;
    for(int i =0 ;i<n;i++)
    {
        cin>>a[i];
    }
    for(int i =0;i<n;i++)
    {
        cin>>b[i];
        a[i] = max(a[i],b[i]);
    }
    ll l = 0;
    ll r = 1e18;
    while(l+1 < r)
    {
        ll mid = (l+r)/2;
        //cout<<mid<<"\n";
        if(check(mid))
        {
            l = mid;
        }
        else
        {
            r = mid;
        }
    }
    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...