제출 #1240020

#제출 시각아이디문제언어결과실행 시간메모리
1240020kamradSelf Study (JOI22_ho_t2)C++20
62 / 100
115 ms5140 KiB
#include <bits/stdc++.h>
using namespace std;

//#pragma GCC optimize("Ofast,unroll-loops")
//#pragma GCC target("avx2,popcnt,lzcnt,abm,bmi,bmi2,fma,tune=native")

using ll  = __int128;

#define IOS               ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define F                 first
#define S                 second
#define sz(x)             x.size()
#define all(x)            x.begin(), x.end()
#define pb                push_back
#define cl                clear
#define minr(a, b)        a = min(a, b);
#define maxr(a, b)        a = max(a, b);
#define shit              cout << "shit\n" << flush;
#define tl                while(1&1) continue;
#define FOR(i, st, nd)    for(ll i = st; i <= nd; i++)
#define rand(l, r)        uniform_ll_distribution<ll64_t>(l,r)(rng)
random_device device;     default_random_engine rng(device());

const ll Mod    = 1e9 + 7; //998244353;
const ll LG     = 64;
const ll SQ     = 500;
const ll Inf    = 2e9 + 10;
const ll maxN   = 3e5 + 10;

long long n, m;
long long a[maxN];
long long b[maxN];

bool check(ll x) {
	ll need = 0;
	for(ll i = 1; i <= n; i++) {
		if(a[i]*m >= x) {
			need += (x+a[i]-1)/a[i];
		}
		else {
			ll rem = x - a[i]*m;
			need += m;
			need += (rem+b[i]-1)/b[i];
		}
	}
	return (need <= n*m);
}

signed main() {
	IOS;

	cin >> n >> m;
	for(ll i = 1; i <= n; i++)
		cin >> a[i];
	for(ll i = 1; i <= n; i++) {
		cin >> b[i];
		a[i] = max(a[i], b[i]);
	}

	__int128 l = 0;
	__int128 r = 1e18+1;

	while(l+1 < r) {
		ll mid = (l+r)>>1;
		if(check(mid))
			l = mid;
		else
			r = mid;
	}
	vector <int> ans;
	while(l) {
		ans.pb(l%10);
		l /= 10;
	}
	reverse(all(ans));
	for(auto x : ans)
		cout << x;

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