제출 #1287641

#제출 시각아이디문제언어결과실행 시간메모리
1287641mattgrytsSelf Study (JOI22_ho_t2)C++20
62 / 100
97 ms5128 KiB
//Denysiuk Illia will win EJOI 2026
//Denysiuk Illia will win UJGOI 2026
//Антон Перебейнис ничего не ботал
#include <algorithm>
#include <bits/stdc++.h>
#include <cassert>
#include <functional>
using namespace std;
const long long INF=1e17;
const long long mod=1e9+7;
const long long maxlog=22;
using victor = vector<int>;
using victorl = vector<long long>;
using dih = deque<int>;
using pll=pair<int,int>;
using ll = long long;
const int NIGGA=2*1e5+10;
long long ceil(ll a,ll b){
    return max(0ll,(a+b-1)/b);
}
int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n;
    ll m;
    cin>>n>>m;
    victorl a(n),b(n);
    for(auto &ai:a)cin>>ai;
    for(auto &bi:b)cin>>bi;
    ll l=0,r=1e18;
    while(r-l>1){
        ll tm=(l+r)/2;
        ll cnt=1ll*n*m;
        bool bad=false;
        for(int i=0;i<n;i++){
            long long mn=0;
            if(a[i]>b[i]){
                if(ceil(tm,a[i])>m)mn=m+ceil(tm-m*a[i],b[i]);
                else mn=ceil(tm,a[i]);
            }
            else{
                mn=ceil(tm,b[i]);
            }
            if(cnt-mn<0){
                bad=true;
                break;
            }else cnt-=mn;
        }
        if(!bad)l=tm;
        else r=tm;
   }
    cout<<l<<'\n';
}
#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...