# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1179446 | 12345678 | Self Study (JOI22_ho_t2) | C++17 | 0 ms | 0 KiB |
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int n,m;
cin>>n>>m;
int a[n],b[n];
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
cin>>b[i];
int l=0,r=1e18;
while(l<r)
{
int mid=(l+r+1)/2;
int cnt=0;
for(int i=0;i<n;i++)
{
if (cnt>n*m) break;
int t=mid, f=0;
if(b[i]>=a[i])
{
if (cnt+ceil((double)t/b[i])>n*m)
{
f=1;
break;
}
cnt+=ceil((double)t/b[i]);
continue;
}
if(a[i]*m>=t)
{
if (cnt+ceil((double)t/a[i])>n*m)
{
f=1;
break;
}
cnt+=ceil((double)t/a[i]);
continue;
}
if (cnt+m>n*m)
{
f=1;
break;
}
cnt+=m;
t-=a[i]*m;
if (cnt+ceil((double)t/b[i])>n*m)
{
f=1;
break;
}
cnt+=ceil((double)t/b[i]);
}
//cout<<l<<" "<<r<<" "<<mid<<endl;
if(!f)
l=mid;
else
r=mid-1;
}
cout<<l;
}