제출 #651866

#제출 시각아이디문제언어결과실행 시간메모리
651866beaconmcSelf Study (JOI22_ho_t2)C++11
100 / 100
437 ms14960 KiB
#include <bits/stdc++.h>

typedef long long ll;

using namespace std;


#define FOR(i, x, y) for(ll i=x; i<y; i++)
#define FORNEG(i, x, y) for(ll i=x; i>y; i--)


#define fast() ios_base::sync_with_stdio(false);cin.tie(NULL)

ll n,m;
vector<ll> lis;
vector<ll> lis2;

bool check(ll a){
	ll cnt = 0;


	FOR(i,0,n){
		if (lis[i] > lis2[i]){
			if (a>lis[i]*m){
				cnt += ceil((a-(lis[i]*m))/lis2[i]) + m + !!((a-(lis[i]*m))%lis2[i]);
			}else{
				cnt += ceil(a/lis[i]) + !!(a%lis[i]);
			}
		}else{
			cnt += ceil(a/lis2[i]) + !!(a%lis2[i]);
		}
		if (cnt > n*m){
			return false;
		}
	}


	if (cnt <= n*m){
		return true;
	}return false;
}

int main(){
	cin >> n >> m;
	FOR(i,0,n){
		ll temp; cin >> temp;
		lis.push_back(temp);
	}
	FOR(i,0,n){
		ll temp; cin >> temp;
		lis2.push_back(temp);
	}


	ll lo = 0;
	ll hi = 1000000000000000000;

	while (lo<hi){
		ll mid = (lo+hi+1)/2;
		if (check(mid)){
			lo = mid;
		}else{
			hi = mid - 1;
		}
	}
	cout << lo;
}
#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...