제출 #1235378

#제출 시각아이디문제언어결과실행 시간메모리
1235378hamanp87Self Study (JOI22_ho_t2)C++17
100 / 100
121 ms4936 KiB
#include<bits/stdc++.h>
using namespace std;
using ll=long long;

//#pragma GCC optimize("03,unroll-loops")
//#pragma GCC target("avx2")
//#pragma GCC target("sse4")

#define all(v) v.begin(),v.end()
#define F first
#define S second
#define pub push_back
#define pob pop_back
#define puf push_front
#define pof pop_front
//#define randi uniform_int_distribution<long long>
#define damoon(v) v.resize(unique(all(v))-v.begin())
//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
//randi dist(0,10000000000000000);

typedef pair<int,int> pii;
typedef pair<long long,long long> pll;
typedef pair<int,bool> pib;
typedef pair<long long,bool> plb;
typedef pair<int,pii> pip;
typedef pair<pii,int> ppi;
typedef vector<int> veci;
typedef vector<long long> vecl;
typedef vector<bool> vecb;
typedef vector<pii> vecp;
typedef set<int> seti;
typedef set<long long> setl;
typedef set<pii> setp;
typedef map<int,int> mapii;
typedef map<long long,long long> mapll;
typedef map<int,bool> mapib;
typedef map<long long,bool> maplb;

const int inf=1e9,mod=1e9+7,neginf=-1e9;
const double PI=acos(-1);
int n;
ll m;
vecl a,b;

bool IsOk(ll x)
{
    ll tot=0,lim=n*m;
    for(int i=0;i<n;i++)
    {
        ll ai=a[i],bi=b[i],ned;
        if(b[i]>=a[i])
        {
            ned=(x+bi-1)/bi;
        }
        else
        {
            if(m*ai>=x)
            {
                ned=(x+ai-1)/ai;
            }
            else
            {
                ll rem=x-m*ai;
                ned=m+(rem+bi-1)/bi;
            }
        }

        tot+=ned;
        if(tot>lim)
            return 0;
    }

    return tot<=lim;
}

void solve()
{
    cin>>n>>m;
    a.resize(n);
    b.resize(n);
    for(int i=0;i<n;i++)
        cin>>a[i];
    for(int i=0;i<n;i++)
        cin>>b[i];

    ll mx=0;
    for(int i=0;i<n;i++)
        mx=max(mx,max(a[i],b[i]));

    ll L=0,R=mx*m+1;
    while(R-L>1)
    {
        ll mid=(L+R)>>1;
        if(IsOk(mid))
            L=mid;
        else
            R=mid;
    }

    cout<<L<<"\n";
}

int main()
{
    cin.tie(0);
    cout.tie(0);
    ios_base::sync_with_stdio(false);

    //ifstream fin("in.txt");
    //ofstream fout("out.txt");

    int t=1;
    //cin>>t;
    while(t--)
    {
        solve();
    }
}

#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...