제출 #1353987

#제출 시각아이디문제언어결과실행 시간메모리
1353987thewizardmanSelf Study (JOI22_ho_t2)C++20
100 / 100
127 ms9824 KiB
#pragma GCC optimize("Ofast,unroll-loops")
#include <bits/stdc++.h>
#define ms(x, y) memset(x, y, sizeof x)
#define sp ,' ',
#define el ,'\n'
using namespace std;
using ll = long long;
using ld = long double;
using pii = pair<int, int>;
using pil = pair<int, ll>;

template<typename... Args>
inline void out(Args... args) {
  (cout << ... << args);
}

struct r {
  template<typename T>
  inline r& operator,(T& x) {
    cin >> x;
    return *this;
  }
} in;
#define in in,

__int128_t n, m, a[300000], b[300000], l = 0, r = LLONG_MAX, ans, mid;

void solve() {
  {ll a, b; in a, b; n = a; m = b;}
  for (int i = 0; i < n; i++) {int x; in x; a[i] = x;}
  for (int i = 0; i < n; i++) {int x; in x; b[i] = x;}
  for (int i = 0; i < n; i++) a[i] = max(a[i], b[i]);
  while (l <= r) {
    mid = ((r - l) >> 1) + l;
    __int128_t rem = 0;
    for (int i = 0; i < n; i++) {
      __int128_t cnt = (mid+a[i]-1) / a[i];
      if (cnt <= m) rem += m - cnt;
      else rem -= (mid - m*a[i] + b[i]-1) / b[i];
    }
    // out('\n');
    // out(l sp mid sp r sp rem el);
    if (rem >= 0) ans = mid, l = mid + 1;
    else r = mid - 1;
  }
  out((ll)ans el);
}

signed main() {
  ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  int t = 1;
  // in(t);
  while (t--) solve();
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…